2012-10-07 15 views
10

प्रारंभ करने के लिए मानक जेपीए विधि मैं जेपीए (मेरे जेपीए प्रदाता के रूप में हाइबरनेट) का उपयोग कर रहा हूं। मैं वास्तव में हाइबरनेट विनिर्देशों से बचने और जेपीए विनिर्देशों का उपयोग करने की कोशिश कर रहा हूं। मेरे पास एक ऐसा कार्य है जो आलसी इकाइयों को शुरू करता है। दुर्भाग्यवश, यह हाइबरनेट विशिष्ट कार्यों का उपयोग करता है।आलसी इकाई

private T initializeAndUnproxy(T entity) { 
     if (entity == null) { 
      throw new 
       NullPointerException("Entity passed for initialization is null"); 
     } 

     Hibernate.initialize(entity); 
     if (entity instanceof HibernateProxy) { 
      entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer().getImplementation(); 
     } 
     return entity; 
    } 

वहाँ किसी भी शुद्ध जेपीए रास्ता संस्थाओं प्रारंभ करने में है: यह मेरा समारोह है?

उत्तर

7

संस्थाओं को आरंभ करने का एक मानक तरीका प्रतीत नहीं होता है।

अगर संस्थाओं प्रारंभ किया है (पूरी तरह से लोड) है या नहीं की जाँच करने के लिए एक मानक तरीका नहीं है, और कहा कि PersistenceUnitUtil के माध्यम से है (यह भी How to test whether lazy loaded JPA collection is initialized? देखें)

जब तक इकाई अभी भी जुड़ा हुआ है, तो आप उसके गुण के लिए उपयोग कर सकते हैं बल प्रारंभ करें। यह बहुत साफ नहीं है, लेकिन कुछ विस्तार करने के लिए काम करता है। नकारात्मकता यह है कि गुणों की सटीक प्रकृति (जैसे कई तत्वों के साथ एक संग्रह) के आधार पर, आप अपने डेटाबेस में दसियों, सैकड़ों या यहां तक ​​कि हजारों प्रश्नों को आग लगा सकते हैं।

कई मामलों में आप प्रोग्राम को प्रारंभिक रूप से प्रारंभ करने (अज्ञात) संस्थाओं के बल के बजाय आरंभिक रूप से निर्दिष्ट करने की आवश्यकता होगी। मैंने इस here के बारे में एक लेख लिखा था।

लेकिन यदि आपको वास्तव में कुछ मानक ढांचे विधि के लिए एकल कॉल के साथ इकाइयों को पूरी तरह से प्रारंभ करने की आवश्यकता है, तो दुर्भाग्य से ऐसा कोई प्रतीत नहीं होता है और आपको अब के लिए हाइबरनेट विशिष्ट कोड से चिपकना होगा।

अंतिम वाक्य के बारे में
+2

: मैं इसे का उपयोग कभी नहीं किया था, लेकिन कैसे के बारे में पूर्ण संस्थाओं को लाने के लिए Entitygraphs का उपयोग कर (https://docs.oracle.com/javaee/7/api/javax/persistence/EntityGraph.html)? क्या किसी इकाई के इकाई ग्राफ़ को प्राप्त करना संभव नहीं होगा और इसके मेटामोडेल के सभी आलसी गुणों को AttributeNodes के रूप में जोड़ना संभव नहीं होगा (और फिर इसे प्राप्त करें)? –

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