2013-08-07 25 views
9

Vaadin için org.springframework.data.jpa.repository.JpaRepository Depoları JPAContainer olarak kullanmak mümkün mü?Bahar Veri Havuzları Vaadin olarak nasıl kullanılır? JPAContainer

İlkbahar 3.2 ile sıfırdan yeni bir Vaadin 7 Projesi kuruyoruz.

Yay tümleştirmesi Spring Vaadin Integration Addon ile yapılır.

+0

Chris, bir çözüm buldunuz mu? Aynı konuyla mücadele ediyorum ve şu anda bir varlık listesi yüklüyorum, bir BeanContainer yaratıyorum, bir foreach döngüsüne varlıklar ekleyin ve tabloya ekleyin. Daha iyi bir yolu var mı? –

+0

Hayır, JPAContainer'ı kendim başlatmalıyım. EntityMangerFactory'ı otomatikleştirip yeni bir JPAContainer'a iletiyorum – d0x

cevap

1

Bildiğim kadarıyla başka bir yerde JPARepository dan EntityProvider alabilir veya olarak böyle JPAContainer kullanabilirsiniz:

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)); 

veya jsut basit

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

Eh, aşağıdaki yazıyı okumalı ve karar JPARepository'yi bir model katmanı olarak kullanmak istemediniz ve BeanItemContainer'a sardınız, çünkü JPAContainer iyi görünüyor ama bakış açımdan bazı performans sorunları var.

JPAContainer issues and different approach

MVP pattern and POJO binding with Hibernate

+1

Amacım, uygulama İçeriğinden bir JPAContainer elde etmektir. Örneğin, ilkbahar her JPARepository için bir JPAContainer'ı başlatır. Onları kendi başıma taklit etmeyi sevmiyorum. – d0x

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); 

     } 
    } 
0

Yay Verileri JPAContainer mimarisi ile uyumlu değildir. Genel olarak, JPAContainer'ı hiç kullanmamayı öneririm, ancak Spring Data deposundan varlıkları alır ve bunları Vaadin bileşenlerine aktarır. Örnek: Vaadin 8 çıktı dek

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

, ben de size de daha iyi yazarak, daha basit API'leri ve veren (Ben yazar değilim ve ayrıca korumak ve on yıldan Vaadin kendisi gelişmekte olan) Viritin kullanmak önermek daha iyi performans. Tam yığın örnek uygulama için bkz. this Spring Data CRUD example.

İlgili konular