Vaadinのようにorg.springframework.data.jpa.repository.JpaRepository
リポジトリを使用することは可能ですか?JPAContainer
Spring 3.2 を使用して、新しい Vaadin 7 プロジェクトをゼロからセットアップしています。
Spring 統合は、Spring Vaadin Integration Addonで行われます。
Vaadinのようにorg.springframework.data.jpa.repository.JpaRepository
リポジトリを使用することは可能ですか?JPAContainer
Spring 3.2 を使用して、新しい Vaadin 7 プロジェクトをゼロからセットアップしています。
Spring 統合は、Spring Vaadin Integration Addonで行われます。
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);
}
}
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 にラップしたくないかどうかを判断する必要があります。
Spring Data は、JPAContainer のアーキテクチャーと互換性がありません。一般に、JPAContainer をまったく使用しないことをお勧めしますが、Spring Data リポジトリからエンティティを取得し、それらをそのまま Vaadin コンポーネントに渡します。例:
grid.setContainerDataSource(new BeanItemContainer(Person.class, repo.findAll());
Vaadin 8 がリリースされるまでは、Viritin を使用することもお勧めします (私は著者であり、Vaadin 自体を 10 年間維持および開発してきました)。これにより、タイピングが改善され、API が簡素化され、パフォーマンスが向上します。完全なスタック サンプル アプリについては、この Spring Data CRUD の例を参照してください。