2013-05-21 6 views
14

के बीच अंतर Hibernate Session कक्षा और EntityManager कक्षा के बीच क्या अंतर है? मुझे पता है कि EntityManager जावा पर्सिस्टेंस एपीआई लागू करता है, लेकिन मुझे यकीन नहीं है कि इसका संबंध Session के साथ क्या है। क्या वे बिल्कुल संबंधित हैं?हाइबरनेट सत्र और EntityManager

उत्तर

3

सत्र कारखाना और सत्र हाइबरनेट-विशिष्ट हैं। EntityManager हुड के नीचे हाइबरनेट सत्र का आह्वान करता है। और अगर आपको लगता है कि EntityManager में उपलब्ध नहीं हैं कुछ विशिष्ट सुविधाओं की जरूरत है, तो आप फोन करके सत्र प्राप्त कर सकते हैं:

Session session = entityManager.unwrap(Session.class); 
+0

क्या सत्र बंद करने के लिए पर्याप्त है? इकाई प्रबंधक को सत्र प्रचार पर कॉल बंद कर देंगे? क्या मुझे स्वतंत्र रूप से सत्र से बनाए गए इकाई प्रबंधक को बंद करना चाहिए? – Sergey

15

Session, एक हाइबरनेट विशेष एपीआई है EntityManager जेपीए के लिए एक मानकीकृत एपीआई है। आप EntityManager को एडाप्टर क्लास के रूप में सोच सकते हैं जो Session को लपेटता है (आप ऑब्जेक्ट EntityManager ऑब्जेक्ट getDelegate() फ़ंक्शन के माध्यम से भी प्राप्त कर सकते हैं)।

यह भर के अन्य जावा APIs के लिए भिन्न नहीं है (उदाहरण के लिए, JDBC, एक मानक एपीआई है प्रत्येक विक्रेता एक ड्राइवर है कि मानक कार्यों को लागू करता है के माध्यम से एपीआई के लिए अपने उत्पाद adapts)।

+0

कार्यक्षमता में उनके बीच एक अंतर है या वे कम या समान समान हैं? – Alexey

+0

वे समान नहीं हैं (कार्यों के अलग-अलग नाम हैं और यहां तक ​​कि विभिन्न उद्देश्यों, एनोटेशन अलग हैं, आदि)। क्या हाइबरनेट (और हर दूसरे जेपीए विक्रेता) करता है एक एडाप्टर ऑब्जेक्ट प्रदान करता है जो देशी हाइबरनेट एपीआई को कॉल करके EntityManager कार्यक्षमता बनाता है। – EmirCalabuch

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