दिलचस्प पोस्ट
जांचें कि UITextField के लिए इनपुट केवल संख्यात्मक है एंड्रॉइड: स्पर्श चाल पर एक दृश्य ले जाएं (ACTION_MOVE) क्या मैं HTML5 के उपयोग से <<inside> एक <बटन> तत्व घोंसला कर सकता हूं? आईपैड उपयोगकर्ताओं का पता लगाने के लिए jQuery का उपयोग? पीडीओ को प्लेसहोल्डर के रूप में एक प्रश्न चिह्न की व्याख्या करने से कैसे रोकें? मिनटों में दो Joda-Time DateTimes के बीच अंतर कैसे प्राप्त करें PHP के साथ पीडीएफ फाइल मर्ज करें जावास्क्रिप्ट में "mm / dd / yyyy" प्रारूप के साथ तिथि कैसे मान्य है? ग्रहण – कोई जावा (जेआरई) / (जेडीके) … कोई आभासी मशीन नहीं है आर .5 में से ऊपर फ्लोटिंग-पॉइंट गणित सी # में संगत है? यह हो सकता है? समाधान करने के लिए वेबपैक के साथ पथ की आवश्यकता है बहुसंख्यक प्रक्रियाओं के बीच बड़े, रीड-ओनल नंबू एरे साझा करें सी में फ़ंक्शन ओवरलोडिंग सी में संकेतक: जब ऐपरसैंड और तारांकन का उपयोग करें?

जेपीए और हाइबरनेट में क्या अंतर है?

मैं समझता हूं कि जेपीए 2 एक विनिर्देश है और हाइबरनेट ओआरएम के लिए एक उपकरण है। इसके अलावा, मैं समझता हूं कि हाइबरनेट में जेपीए 2 की तुलना में अधिक विशेषताएं हैं। लेकिन व्यावहारिक दृष्टिकोण से, वास्तव में अंतर क्या है?

मुझे iBatis का उपयोग करने का अनुभव है और अब मैं सीतनिद्रा में होना या जेपीए 2 सीखने की कोशिश कर रहा हूं। मैंने प्रो जेपीए 2 बुक उठाया और यह "जेपीए प्रदाता" का जिक्र करता रहता है उदाहरण के लिए:

अगर आपको लगता है कि एक फीचर को मानकीकृत किया जाना चाहिए, तो आपको बोलना चाहिए और उसे अपने जेपीए प्रदाता से अनुरोध करना चाहिए

यह मुझे भ्रमित करता है इसलिए मेरे पास कुछ सवाल हैं:

  • अकेले जेपीए 2 का उपयोग करके मैं अपने पॉजो की टिप्पणी के जरिए डीबी से डाटा प्राप्त कर सकता हूं
  • क्या जेपीए 2 को "जेपीए प्रदाता" जैसे टॉपलिंक या सीतनिद्रा में इस्तेमाल किया जाता है? यदि हां, तो अकेले हाइबरनेट की तुलना में जेपीए 2 + हाइबरनेट का उपयोग करने का क्या लाभ है?
  • क्या आप एक अच्छी व्यावहारिक जेपीए 2 बुक की सिफारिश कर सकते हैं। "प्रो जेपीए 2" एक बाइबल और जेपीए 2 पर संदर्भ की तरह अधिक लगता है (यह पुस्तक के बाद के आधे तक प्रश्नों में नहीं आती है)। क्या कोई किताब है जो JPA2 के लिए एक समस्या / समाधान दृष्टिकोण लेती है?

वेब के समाधान से एकत्रित समाधान "जेपीए और हाइबरनेट में क्या अंतर है?"

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

जब आप जेपीए के साथ हाइबरनेट का उपयोग करते हैं तो आप वास्तव में हाइबरनेट जेपीए कार्यान्वयन का उपयोग कर रहे हैं इस का लाभ यह है कि आप जेपीए विनिर्देश के दूसरे कार्यान्वयन के लिए जेपीए के हाइबरनेट के कार्यान्वयन को स्वैप कर सकते हैं। जब आप सीधे हाइबरनेट का उपयोग करते हैं तो आप कार्यान्वयन में लॉक कर रहे हैं क्योंकि अन्य ORM विभिन्न तरीकों / विन्यास और एनोटेशन का उपयोग कर सकते हैं, इसलिए आप केवल किसी अन्य ORM पर स्विच नहीं कर सकते

अधिक विस्तृत विवरण के लिए मेरी ब्लॉग प्रविष्टि पढ़ें

जेपीए नृत्य है, सीतनिद्रा में होना नर्तक है

कुछ चीजों को समझना बहुत मुश्किल है कि भाषा के ऐतिहासिक परिप्रेक्ष्य और जेसीपी की समझ के बिना।

प्रायः ऐसे तीसरे पक्ष होते हैं जो ऐसे पैकेज का विकास करते हैं जो फंक्शन करते हैं या एक अंतर को भरते हैं जो आधिकारिक जेडीके का हिस्सा नहीं हैं। विभिन्न कारणों से कि जेपीसी (जावा सामुदायिक प्रक्रिया) के माध्यम से जावा जेडीके का कार्य हो सकता है

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

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

इस बीच, हाइबरनेट और अन्य ओआरएम उपकरण विक्रेताओं से बहुत इनपुट वाले जेसीपी जेएसआर 220 (जावा स्पेसिफिकेशन अनुरोध) का विकास कर रहा था जिसके परिणामस्वरूप जेपीए 1.0 (2006) और अंततः JSR 317 जेपीए 2.0 (2009) है। ये एक जेनेरिक जावा अटियास एपीआई के विनिर्देश हैं। एपीआई जेडीके में इंटरफेस के एक समूह के रूप में प्रदान किया जाता है ताकि आपकी कक्षाएं जावाैक्स पर निर्भर हो सकें। और विशिष्ट वेंडर के बारे में चिंता न करें जो आपके ऑब्जेक्ट्स को जारी रखने के काम कर रही है। यह केवल एपीआई है और कार्यान्वयन नहीं है सीतनिद्रा में होना अब जेपीए 2.0 विनिर्देश लागू करने वाले कई विक्रेताओं में से एक है। आप जेपीए की ओर कोड कर सकते हैं और जो कुछ भी अनुरूप ORM विक्रेता आपकी ज़रूरतों के अनुरूप हैं।

ऐसे मामलों हैं जहां सीतनिद्रा में होना आपको उन विशेषताओं को दे सकता है जो जेपीए में संहिताबद्ध नहीं हैं। इस स्थिति में, आप सीधे अपने वर्ग में सीतनिद्रा में होना विशिष्ट एनोटेशन सम्मिलित करने के लिए चुन सकते हैं क्योंकि JPA ऐसा करने के लिए इंटरफ़ेस प्रदान नहीं करता है

स्रोत: http://www.reddit.com/r/java/comments/16ovek/understanding_when_to_use_jpa_vs_hibernate/

जेपीए इंटरफ़ेस है, जबकि हाइबरनेट कार्यान्वयन है

परंपरागत रूप से कई जावा ओआरएम समाधान हैं:

  • सीतनिद्रा में होना
  • TopLink
  • JDO

अपनी स्वयं की मानचित्रण परिभाषा या क्लाइंट एपीआई परिभाषित प्रत्येक कार्यान्वयन जेपीए विशेषज्ञ समूह ने इन सभी उपकरणों का सबसे अच्छा संग्रह किया और इसलिए उन्होंने जावा अटियास्टेंस एपीआई मानक बनाया।

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

मानक जेपीए ने जावा ओआरएम प्रतियोगिता को एक नए स्तर पर धकेल दिया है और इससे बेहतर कार्यान्वयन हो सकता है।

जैसा कि मेरी पुस्तक में बताया गया है , हाई-परफार्मेंस जावा अस्थिरता , सीतनिद्रा में होना सुविधाओं की पेशकश करता है जो अभी तक जेपीए द्वारा समर्थित नहीं हैं :

  • विस्तारित पहचानकर्ता जनरेटर ( हाय / लो , जमा, पूल-लो )
  • पारदर्शी तैयार बयान बैचिंग
  • अनुकूलन योग्य @SQLInsert ( @SQLInsert , @SQLUpdate , @SQLDelete ) स्टेटमेंट्स
  • स्थैतिक या गतिशील संग्रह फिल्टर (जैसे @FilterDef , @Filter , @Where ) और एंटिटी फ़िल्टर (जैसे @Where )
  • एसक्यूएल टुकड़े के लिए मानचित्रण गुण (उदा। @Formula )
  • अपरिवर्तनीय संस्थाओं (जैसे @Immutable )
  • अधिक फ्लश मोड (जैसे FlushMode.MANUAL , FlushMode.ALWAYS )
  • किसी दिए गए इकाई की प्राकृतिक कुंजी द्वारा द्वितीय-स्तरीय कैश को पूछताछ करना
  • इकाई-स्तरीय कैश संगतता रणनीतियों (उदाहरण के लिए Cache(usage = CacheConcurrencyStrategy.READ_WRITE) )
  • एचकेएल के माध्यम से संस्करणित थोक अद्यतन
  • आशावादी लॉकिंग चेक से खेतों को छोड़ दें (उदा। @OptimisticLock(excluded = true) )
  • संस्करणहीन आशावादी लॉकिंग (जैसे ऑप्टिस्टिकलोक टाईप। एॉल, आशावादी लॉकटाइप। डीआरटीआई )
  • छोड़ने के लिए समर्थन (प्रतीक्षा किए बिना) निराशावादी लॉक अनुरोध
  • जावा 8 दिनांक और समय के लिए समर्थन
  • बहुसंख्यक समर्थन
  • नरम हटाए जाने के लिए समर्थन (जैसे @Where , @Filter )

इन अतिरिक्त सुविधाओं को उच्च एंटरप्राइज़ अनुप्रयोगों द्वारा मांग की जाने वाली कई दृढ़ता आवश्यकताओं को हल करने के लिए हाइबरनेट की अनुमति है।

विकी से

जावा पर्सिस्टेंस एपीआई बनाने के लिए प्रेरणा

कई एंटरप्राइज़ जावा डेवलपर्स ओपन सोर्स फ्रेमवर्क या डेटा एक्सेस ऑब्जेक्ट्स के बजाय इकाई सेम के द्वारा प्रदान की जाने वाली हल्के स्थिर वस्तुओं का उपयोग करते हैं: इकाई सेम और एंटरप्राइज बीन्स को बहुत ही भारी और जटिल होने की प्रतिष्ठा थी, और कोई भी उन्हें केवल जावा ईई एप्लीकेशन सर्वर में इस्तेमाल कर सकता था तीसरे पक्ष के दृढ़ता ढांचे के कई विशेषताएं जावा कायम रहने की एपीआई में शामिल किए गए थे, और 2006 के रूप में हाइबरनेट (संस्करण 3.2) और ओपन-सोर्स वर्जन टॉपलिंक एस्पेरियल जैसी जावा प्रास्तियां एपीआई के कार्यान्वयन हो गए हैं।

जैसा कि जेसीपी पेज में बताया गया है कि एक्लिप्स लिंक जेपीए के लिए संदर्भ कार्यान्वयन है। इस पर थोड़ा और अधिक के लिए इस उत्तर को देखो।

जेपीए में खुद की विशेषताएं हैं जो एक मानक ओआरएम फ्रेमवर्क के लिए तैयार होंगी। चूंकि जेपीए जावा ईई स्पेक का एक हिस्सा है, आप एक परियोजना में अकेले जेपीए का उपयोग कर सकते हैं और इसे किसी भी जावा ईई संगत सर्वर के साथ काम करना चाहिए। हां, इन सर्वरों के पास जेपीए स्पेस के लिए कार्यान्वयन होगा।

हाइबरनेट सबसे लोकप्रिय ओआरएम फ्रेमवर्क है, जब एक बार जेपीए ने हाइबरनेट जेपीए विनिर्देशों के अनुरूप मिलना शुरू कर दिया। विनिर्देशन के मूलभूत सेट के अतिरिक्त जो कि सीतनिद्रा में होना चाहिए, अतिरिक्त सामानों का पूरा बहुत सारे प्रदान करता है।

सीतनिद्रा में होना एक जेपीए प्रदाता है

कृष्णा श्रीनिवासन द्वारा जेपीए बनाम सीतनिद्रा में होना पृष्ठ का कहना है:

जेपीए जावा ऑब्जेक्ट्स और रिलेशनल डेटाबेस के बीच डेटा को एक्सेस करने, जारी रखने और प्रबंधित करने के लिए एक विनिर्देश है। परिभाषा के अनुसार इसकी API कहते हैं, यह केवल विनिर्देश है एपीआई के लिए कोई क्रियान्वयन नहीं है जेपीए मानक के बाद इंटरफेस विकसित करने के लिए नियमों और दिशानिर्देशों का सेट निर्दिष्ट करता है। सीधे बिंदु पर: जेपीए ऑब्जेक्ट रिलेशनल मैपिंग (ORM) को लागू करने के लिए केवल दिशा निर्देश है और कार्यान्वयन के लिए कोई अंतर्निहित कोड नहीं है। जहां हाइबरनेट जेपीए के दिशानिर्देशों का वास्तविक कार्यान्वयन है जब हाइबरनेट JPA विनिर्देश लागू करता है, तो विनिर्देश में उल्लिखित सभी मानकों का पालन करते हुए यह जेपीए समूह द्वारा प्रमाणित किया जाएगा। उदाहरण के लिए, जेपीए के दिशानिर्देश जेपीए कार्यान्वयन के हिस्से के रूप में कार्यान्वित करने के लिए अनिवार्य और वैकल्पिक विशेषताओं की जानकारी प्रदान करेंगे।

जेपीए सिर्फ एक विनिर्देश है जो ठोस कार्यान्वयन की आवश्यकता है डिफ़ॉल्ट कार्यान्वयन ओरेकल प्रदान "ईक्लिपसेलांक" अब है (टॉपलिंक ओरेकल द्वारा ग्रहण करने के लिए ईक्लिप्स के साथ विलय करने के लिए दान किया जाता है)

(संदर्भ: http://www.oracle.com/technetwork/middleware/toplink/index-085257.html http://www.eclipse.org/org/press-release/20080317_Eclipselink.php )

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

एक अन्य जेपीए कार्यान्वयन ओपनजेपीए (ओपनजैपा.एपीचेओआरजी) है जो कोडो कार्यान्वयन का विस्तार है।

जेपीए: एक इंटरफेस की तरह है और इसका उपयोग कार्यान्वयन के लिए कोई ठोस कार्यान्वयन नहीं है, जो जेपीए में हैं।

सीतनिद्रा में होना: केवल जेपीए प्रदाता है जो जेपीए में फ़ंक्शंस के क्रियान्वयन में है और कुछ अतिरिक्त कार्य कर सकते हैं जो जेपीए में नहीं हो सकते।

युक्ति: आप उपयोग कर सकते हैं

  *combo 1* : JPA + JPA Provider(Hibernate) *combo 2* : only Hiberante which does not need any interface 

कॉम्बो 1 : इसका उपयोग तब किया जाता है जब आपको लगता है कि आपका हाइबरनेट बेहतर प्रदर्शन नहीं दे रहा है और उस समय जेपीए प्रदाता को बदलना चाहते हैं, उस समय आपको एक बार फिर से अपना जेपीए लिखना नहीं पड़ता है। आप एक और जेपीए प्रदाता लिख ​​सकते हैं … और आप जितनी बार बदल सकते हैं।

कॉम्बो 2 : बहुत कम इस्तेमाल होता है जब आप अपने जेपीए प्रदाता को किसी भी कीमत पर नहीं बदलते हैं।

http://blog-tothought.rhcloud.com//post/2 पर जाएं, जहां आपका पूरा भ्रम स्पष्ट हो जाएगा।

जेपीए अंतरफलक है, हाइबरनेट उस इंटरफ़ेस का एक कार्यान्वयन है।

जेपीए ORM-APIs को मानकीकृत करने के लिए एक विनिर्देश है हाइबरनेट जेपीए कार्यान्वयन का एक विक्रेता है इसलिए यदि आप हाइबरनेट के साथ जेपीए का उपयोग करते हैं, तो आप मानक जेपीए एपीआई का उपयोग कर सकते हैं, हाइबरनेट हुड के तहत, कुछ और गैर मानक फ़ंक्शन प्रदान करेगा। http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html_single/ और http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/ देखें

जेपीए और हाइबरनेट अंतर

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

जहां हाइबरनेट जेपीए के दिशानिर्देशों का वास्तविक कार्यान्वयन है जब हाइबरनेट JPA विनिर्देश लागू करता है, तो विनिर्देश में उल्लिखित सभी मानकों का पालन करते हुए यह जेपीए समूह द्वारा प्रमाणित किया जाएगा। उदाहरण के लिए, जेपीए के दिशानिर्देश जेपीए कार्यान्वयन के हिस्से के रूप में कार्यान्वित करने के लिए अनिवार्य और वैकल्पिक विशेषताओं की जानकारी प्रदान करेंगे।

सीतनिद्रा में होना एक जेपीए प्रदाता है जब विनिर्देश में नए बदलाव आते हैं, तो सीतनिद्रा में होना JPA विनिर्देश के लिए अपने अद्यतन कार्यान्वयन को जारी करेगा।

जेपीए सिर्फ एक विनिर्देश है। बाजार में ऐसे कई विक्रेताओं हैं जो जेपीए लागू करते हैं। विभिन्न प्रकार के विक्रेता अलग-अलग तरीके से जेपीए को लागू करते हैं। तो विक्रेताओं के विभिन्न प्रकार अलग-अलग कार्यक्षमता प्रदान करते हैं ताकि आपकी आवश्यकताओं के आधार पर उचित विक्रेता चुन सकें।

यदि आप सीतनिद्रा में होना या किसी अन्य विक्रेताओं को जेपीए के बजाय उपयोग कर रहे हैं, तो आप आसानी से ईक्लिप्स लिंक्स या ओपनएजेपी को सीतनिद्रा में डालना नहीं जा सकते हैं। लेकिन अगर आप जेपीए का इस्तेमाल करते हैं तो आपको केवल दृढ़ता से एक्सएमएल फ़ाइल में परिवर्तन करना पड़ता है। इसलिए प्रवासन आसानी से संभव है जेपीए।

जेपीए एक एपीआई है, जो हाइबरनेट लागू करता है। हाइबरनेट जेपीए की भविष्यवाणी करता है जेपीए से पहले, आप अपना ओआरएम करने के लिए मूल हाइबरनेट कोड लिखते हैं। जेपीए सिर्फ इंटरफ़ेस है, इसलिए अब आप जेपीए कोड लिखते हैं और आपको कार्यान्वयन खोजने की आवश्यकता है। सीतनिद्रा में होना एक कार्यान्वयन होता है

तो आपकी पसंद ये हैं: सीतनिद्रा में होना, टूप्लिक आदि …

जेपीए के लिए यह लाभ यह है कि यह आपको अपने कार्यान्वयन को स्वैप करने की अनुमति देता है यदि आवश्यकता हो इसका मतलब यह है कि मूल निस्तारण / toplink / etc … एपीआई कार्यक्षमता प्रदान कर सकता है कि जेपीए विनिर्देश समर्थन नहीं करता है।

जबकि जेपीए विनिर्देशन है, हाइबरनेट एक क्रियान्वयन प्रदाता है जो विनिर्देश में निर्धारित नियमों का पालन करता है।

जावा – इसकी आजादी न केवल ऑपरेटिंग सिस्टम से है, बल्कि विक्रेता से भी है।

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

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

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

जेपीए जेएसआर यानी जावा विशिष्टता की जरूरत है, ऑब्जेक्ट रिलेशनल मैपिंग को कार्यान्वित करने की जरूरत है, जिसके कार्यान्वयन के लिए कोई विशिष्ट कोड नहीं है। यह जावा ऑब्जेक्ट्स और रिलेशनल डेटाबेस के बीच डेटा को एक्सेस, जारी रखने और प्रबंधित करने के लिए कुछ नियमों को परिभाषित करता हैउसके परिचय के साथ, ईजेबी को प्रतिस्थापित किया गया था क्योंकि जावा डेवलपर समुदाय द्वारा हेवीवेट होने के लिए इसकी आलोचना की गई थी। हाइबरनेट एक तरीका है जिसमें ते दिशानिर्देशों का उपयोग करते हुए जेपीए को कार्यान्वित किया जा सकता है। हाइबरनेट एक उच्च-प्रदर्शन वस्तु / संबंधपरक दृढ़ता और क्वेरी सेवा है जो ओपन सोर्स जीएनयू लेसर जनरल पब्लिक लाइसेंस (एलजीपीएल) के अंतर्गत लाइसेंस प्राप्त है। इसका लाभ यह है कि आप JPA विनिर्देश के दूसरे कार्यान्वयन के लिए जेपीए के हाइबरनेट के कार्यान्वयन को स्वैप कर सकता है। जब आप सीधे हाइबरनेट का उपयोग करते हैं तो आप कार्यान्वयन में लॉक कर रहे हैं क्योंकि अन्य ORM विभिन्न तरीकों / विन्यास और एनोटेशन का उपयोग कर सकते हैं, इसलिए आप केवल किसी अन्य ORM पर स्विच नहीं कर सकते

जेपीए सिर्फ एक विनिर्देश है जो ठोस कार्यान्वयन की आवश्यकता है ऑरेकल द्वारा प्रदत्त डिफ़ॉल्ट कार्यान्वयन अब "Eclipselink" है टॉपलिंक ओरेकल से ईक्लिप्स फाउंडेशन को ईक्लीपसेल्च के साथ विलय करने के लिए दान किया जाता है।

एक्लिपसेलैंक का उपयोग करना, एक यह सुनिश्चित किया जा सकता है कि कोड किसी भी कार्यान्वयन के लिए पोर्टेबल है यदि ज़रूरत होती है। सीतनिद्रा में होना भी पूर्ण JPA कार्यान्वयन है + अधिक हाइबरनेट जेपीए का सुपर सेट है, कुछ अतिरिक्त सीतनिद्रा में होना विशिष्ट कार्यशीलता के साथ। इसलिए हाइबरनेट में विकसित किया गया अनुप्रयोग संगत नहीं हो सकता है, जब अन्य कार्यान्वयन के लिए स्विच किया गया हो। फिर भी सीतनिद्रा में होना डेवलपर्स के बहुमत के रूप में जेपीए कार्यान्वयन और व्यापक रूप से उपयोग किया जाता है।

एक और जेपीए कार्यान्वयन ओपनजेपीए है, जो कोडो कार्यान्वयन का एक विस्तार है

जेपीए बनाम हाइबरनेट

जेपीए सिर्फ एक विनिर्देश है, जबकि सीतनिद्रा में होना जेपीए प्रदाता में से एक है अर्थात सीतनिद्रा में होना जेपीए अनुबंध में उल्लिखित विभिन्न चीजों को लागू कर रहा है।

जेपीए या जावा पर्सिस्टेंस एपीआई ओआरएम के लिए एक मानक विनिर्देश है, जबकि सीतनिद्रा में होना वास्तविक ओआरएम कार्यान्वयन या ढांचा है।

जेपीए जावा अस्थिरता एपीआई है जो API के लिए केवल विनिर्देश निर्दिष्ट करता है इसका अर्थ है कि एपीआई बनाने के लिए नियमों और दिशा-निर्देशों का सेट। अगर एक अन्य संदर्भ कहते हैं, तो यह मानकों का सेट होता है जो उन एपीआई बनाने के लिए आवरण प्रदान करता है, जो कि डाटाबेस से इकाई वस्तु को एक्सेस करने के लिए इस्तेमाल किया जा सकता है। जेपीए को ओरेकल द्वारा प्रदान किया जाता है। जब हम डेटाबेस एक्सेस करने जा रहे हैं, तो हमें निश्चित रूप से इसकी क्रियान्वयन की आवश्यकता है। इसका अर्थ है कि एपीआई लागू करने के लिए जेपीए केवल दिशानिर्देश निर्दिष्ट करता है। सीतनिद्रा में होना एक जेपीए प्रदाता / विक्रेता है जो कि एपीआई को लागू करने के लिए ज़िम्मेदार है। सीतनिद्रा में होना TopLink और ओपन जेपीए की तरह कुछ जेपीए एपीआई प्रदाताओं के उदाहरण हैं। इसलिए हम हाइबरनेट के माध्यम से JPA निर्दिष्ट मानक API का उपयोग करते हैं