2013-08-07 6 views
9

के रूप में स्प्रिंग डेटा रेपॉजिटरीज़ का उपयोग कैसे करें Vaadin के लिए org.springframework.data.jpa.repository.JpaRepository रिपोजिटरीज JPAContainer के रूप में उपयोग करना संभव है?वैडिन जेपीएकॉन्टेनर

हम स्प्रिंग 3.2 के साथ स्क्रैच से एक नया वाडिन 7 प्रोजेक्ट स्थापित कर रहे हैं।

वसंत एकीकरण Spring Vaadin Integration Addon के साथ किया जाता है।

+0

क्रिस, क्या आपको कोई समाधान मिला है? मैं एक ही मुद्दे से जूझ रहा हूं और वर्तमान में मैं संस्थाओं की एक सूची लोड करता हूं, एक बीनकॉन्टेनर बनाता हूं, एक अग्रैच्छिक चक्र में अंदर इकाइयों को जोड़ता हूं और इसे तालिका में जोड़ता हूं। क्या कोई बेहतर तरीका है? –

+0

नहीं, मुझे अपने द्वारा जेपीएकॉन्टेनर को तुरंत चालू करने की आवश्यकता है। मैं EntityMangerFactory को स्वचालित करता हूं और फिर इसे एक नए जेपीएकॉन्टेनर – d0x

उत्तर

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 में लपेटना नहीं चाहते थे, cuz JPAContainer अच्छा दिखता है लेकिन मेरे दृष्टिकोण से कुछ प्रदर्शन समस्याएं हैं।

JPAContainer issues and different approach

MVP pattern and POJO binding with Hibernate

+1

पर पास करता हूं मेरा लक्ष्य एप्लिकेशन संदर्भ से जेपीएकॉन्टेनर प्राप्त करना है। उदाहरण के लिए, वसंत प्रत्येक जेपीएपॉजिटरी के लिए एक जेपीएकॉन्टेनर को तुरंत चालू करता है। मैं उन्हें खुद से तुरंत शुरू नहीं करना चाहता हूं। – 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

स्प्रिंग डाटा JPAContainer की वास्तुकला के साथ संगत नहीं है। आम तौर पर मैं सुझाव देता हूं कि जेपीएकॉन्टेनर का उपयोग न करें, लेकिन बस स्प्रिंग डेटा रिपोजिटरी से इकाइयां प्राप्त करें और उन्हें वैदिन घटकों के लिए पास करें। उदाहरण:

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

तक Vaadin 8 बाहर है, मैं भी जो आप बेहतर टाइपिंग, सरल एपीआई और भी देता है Viritin उपयोग करने के लिए (मैं लेखक हूँ और यह भी बनाए रखने की है और एक दशक के लिए Vaadin ही विकासशील) का सुझाव बेहतर प्रदर्शन। एक पूर्ण स्टैक उदाहरण ऐप के लिए this Spring Data CRUD example देखें।

संबंधित मुद्दे