10

Vaadinのようにorg.springframework.data.jpa.repository.JpaRepositoryリポジトリを使用することは可能ですか?JPAContainer

Spring 3.2 を使用して、新しい Vaadin 7 プロジェクトをゼロからセットアップしています。

Spring 統合は、Spring Vaadin Integration Addonで行われます。

4

3 に答える 3

1
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;

    import com.vaadin.addon.jpacontainer.JPAContainer;
    import com.vaadin.addon.jpacontainer.JPAContainerFactory;

    @SpringComponent
    public class SpringDataVaadinJPAContainer {
        @PersistenceContext
        private EntityManager entityManager;

        public SpringDataVaadinJPAContainer() {
            JPAContainer<Person> container = JPAContainerFactory.make(Person.class, entityManager);

        }
    }
于 2016-03-18T06:08:42.433 に答える
1

JPARepository または他の場所から EntityProvider を取得できる限り、次のように JPAContainer を使用できます。

EntityManager entityManager = getEntityManager(Campaign.class));
MutableLocalEntityProvider<Campaign.class)> provider;
provider = new CachingMutableLocalEntityProvider<Campaign.class)>(Campaign.class), entityManager);
provider.setTransactionsHandledByProvider(false);
JPAContainer<Campaign> container = new JPAContainer<Campaign>(Campaign.class);       container.setEntityProvider(EntityProviderUtil.get().getEntityProvider(Campaign.class));

またはシンプルに

EntityManager entityManager = getEntityManager(Campaign.class));
JPAContainer<Campaign> container = JPAContainerFactory.make(Campaign.class, entityManager)

次の投稿を読んで、JPARepository をモデル レイヤーとして使用し、それを BeanItemContainer にラップしたくないかどうかを判断する必要があります。

JPAContainer の問題と異なるアプローチ

Hibernate を使用した MVP パターンと POJO バインディング

于 2013-08-19T06:41:54.493 に答える
0

Spring Data は、JPAContainer のアーキテクチャーと互換性がありません。一般に、JPAContainer をまったく使用しないことをお勧めしますが、Spring Data リポジトリからエンティティを取得し、それらをそのまま Vaadin コンポーネントに渡します。例:

grid.setContainerDataSource(new BeanItemContainer(Person.class, repo.findAll());

Vaadin 8 がリリースされるまでは、Viritin を使用することもお勧めします (私は著者であり、Vaadin 自体を 10 年間維持および開発してきました)。これにより、タイピングが改善され、API が簡素化され、パフォーマンスが向上します。完全なスタック サンプル アプリについては、この Spring Data CRUD の例を参照してください。

于 2016-11-14T15:21:16.937 に答える