2011-12-08 9 views
5

मैंने सोचा है, Java EE 7's कोर इंटरफेस AutoCloseable बढ़ाता है या नहीं। (तक कोर इंटरफेस मैं मुख्य रूप से EntityManager मतलब और पसंद है, तथापि मैं अगर वहाँ अन्य इंटरफेस या वर्गों है कि संभावित अपने आप बंद किया जा सकता है निश्चित रूप से पता नहीं है।)जावा ईई 7 के कोर इंटरफेस (EntityManager, ...) ऑटोक्लोसेबल का विस्तार कर सकते हैं?

मुझे लगता है कि वे चाहिए और यहाँ है मेरी धारणा का आधार।

Java 6's Connection भी Closeable विस्तार नहीं करता है, फिर भी Java 7's Connection फैली AutoCloseable (बस java.sql पैकेज में कई अन्य इंटरफेस की तरह)।

EntityManager तरह इंटरफेस तरह से AutoCloseable का विस्तार कर सकते हैं कि यह हमें अच्छी तरह से, यह देखते हुए Java 7's try-with-resources statement में काम करेगा? या EntityManager ऑटो-जादुई रूप से बंद करना बहुत जटिल है?

क्या यह विशेष सुविधा JSR-342 का हिस्सा माना जाता है?

+1

मुझे लगता है कि जेपीए विनिर्देश मेलिंग सूची में पूछने के लिए यह एक अच्छा सवाल है: http://java.net/projects/jpa-spec/lists –

+0

यह एक बार सर्वलेट सूची में आया था। समस्या यह है कि जेपीए, जेएसएफ आदि जावा ईई के बाहर पीछे संगत होना चाहते हैं। –

+2

यदि आप जेपीए के कंटेनर-प्रबंधित संस्करण का उपयोग करते हैं, तो वास्तव में लेन-देन शुरू हो जाएंगे और आपके शब्द "ऑटो-जादुई" के रूप में बंद हो जाएंगे, और आपको इसके बारे में चिंता करने की ज़रूरत नहीं है। यदि आपका प्रश्न जेपीए के एप्लिकेशन-प्रबंधित संस्करण से संबंधित है, तो आपको प्रश्न संपादित करना चाहिए। – jmoreira

उत्तर

3

यदि आप अपनी जेपीए ऑब्जेक्ट्स का प्रबंधन कर रहे हैं तो एंटीटीमेनर्स के संबंध में और कुछ हद तक EntityManagerFactory के संबंध में प्रयास करना एक अच्छी बात है।

मैंने एक उपयोगिता बनाने का विकल्प चुना जो java.lang.reflect.Proxy में EntityManagerFactory को लपेटता है जो इंटरफ़ेस के AutoCloseable संस्करण को लागू करता है। आमंत्रण हैंडलर फिर एंटीटी मैनेजर() बनाने के लिए कॉल को रोकता है ताकि यह अंतर्निहित EntityManager उदाहरणों के प्रॉक्सी संस्करणों को वापस कर सके जो ऑटोक्लोसेबल को भी कार्यान्वित करते हैं।

मुझे लगता है कि कंटेनर प्रबंधित जेपीए ऑब्जेक्ट्स की दुनिया में यह बहुत आसान काम कर रहा है लेकिन यदि आप एक साधारण वेबैप में चल रहे हैं तो यह आपके लिए काम कर सकता है।

+0

massfords उल्लेख करना भूल गए कि उन्होंने एक महान लेख लिखा है जहां वह दिखाता है कि वास्तव में इस तरह की प्रॉक्सी कैसे बनाएं, आप इसे यहां पा सकते हैं: http://massfords.com/Proxy-for-AutoCloseable/। धन्यवाद मार्क! – wpodgorski

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