JPA और स्प्रिंग डेटा JPA में क्या अंतर है?


144

मैं स्प्रिंग डेटा-जेपीए और जेपीए के बीच के अंतर को लेकर थोड़ा भ्रमित हूं। मैं जेपीए के बारे में जानता हूं कि यह जावा ओब्जेक्ट्स को लोकप्रिय ओआरएम प्रौद्योगिकी का उपयोग करके एक रिलेशनल डेटाबेस के लिए बनाए रखने के लिए एक विनिर्देश है।

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

अब, वास्तव में स्प्रिंग डेटा जेपीए क्या है?

क्या स्प्रिंग डेटा जेपीए ने जेपीए पर कुछ और कार्यक्षमता (इंटरफेसेस) जोड़ दी है और अभी भी यह केवल निर्दिष्ट है या यह भी जेपीए प्रदाता है?

मैंने देखा कि स्प्रिंग डेटा जेपीए रिपॉजिटरी (डीएओ परत: अगर मैं गलत नहीं हूं) के आसपास काम करता हूं। तो, मेरा मतलब है, यह 'स्प्रिंग डेटा जेपीए + हाइबरनेट' का उपयोग करके कैसे अलग है या केवल 'हाइबरनेट' निर्देशन का उपयोग कर रहा है?

जवाबों:


126

मैंने स्प्रिंग देखा, जेपीए रिपॉजिटरी (डीएओ परत: अगर मैं गलत नहीं हूं) के आसपास काम करता हूं। तो मेरा मतलब है कि 'स्प्रिंग जेपीए + हाइबरनेट' का उपयोग करना अलग है या केवल सीधे 'हाइबरनेट' का उपयोग करना?

जैसा कि आपने कहा, जेपीए एक है विनिर्देश जबकि हाइबरनेट कि विनिर्देश की एक विशेष कार्यान्वयन है (इन कार्यान्वयन आमतौर पर के रूप में भेजा प्रदाता )। हाइबरनेट का उपयोग करके आप अपने आप को उस प्रदाता से बाँध लेते हैं जब आवश्यकता होने पर किसी अन्य विकल्प पर स्विच करने की आपकी स्वतंत्रता को प्रतिबंधित कर देता है (उदाहरण के लिए, आप इसके बजाय EclipseLink या ObjectDB का उपयोग करना चाहते हैं क्योंकि Hibernate में एक बग है जो आपकी विकास प्रक्रिया को रोक देता है)।

स्प्रिंग डेटा JPA के प्रलेखन का हवाला देते हुए :

किसी एप्लिकेशन के डेटा एक्सेस लेयर को लागू करना काफी समय से बोझिल है। बहुत अधिक बॉयलरप्लेट कोड लिखना पड़ा। डोमेन कक्षाएं एनीमिक थीं और उन्हें वास्तविक वस्तु उन्मुख या डोमेन संचालित तरीके से डिजाइन नहीं किया गया था।

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

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

<repositories base-package="com.acme.repositories" />

इस प्रकार, आप इसे कंटेनर या उसके बाहर के संदर्भ में उपयोग करने की अनुमति देते हैं।

अब वास्तव में स्प्रिंग, जेपीए क्या है। क्या स्प्रिंग, जेपीए ने जेपीए पर कुछ और कार्यक्षमता (इंटरफेसेस) जोड़ दी है और अभी भी यह केवल निर्दिष्ट है या यह भी एक जेपीए प्रदाता है?

स्प्रिंग डेटा JPA उन रिपॉजिटरी को लागू करने के लिए एक परिभाषा प्रदान करता है जो JPA विनिर्देश को संदर्भित करके हुड के तहत समर्थित हैं, जिस प्रदाता को आप परिभाषित करते हैं।


1
क्या मैं रिपॉजिटरी को उन संस्थाओं का संग्रह कह सकता हूं जो स्प्रिंग मैनेज करती हैं? मुझे नहीं पता कि क्यों लेकिन रिपोजिटरी का उपयोग करते हुए स्प्रिंग जेपीए समर्थन ईजेबी के एंटिटी मैनजेर के समान है - क्या यह सही सोच है या वे अपने उद्देश्य में पूरी तरह से अलग हैं? अग्रिम में धन्यवाद। मुस्तफा।
मुस्तफा

1
@ मुस्तफा के अधिकांश समाधानों में सामान्य आधार होते हैं। कठिन लक्ष्य समान हो सकता है, इसमें शामिल इंटरफेस के कारण कार्यान्वयन अलग है।
फ्रिट्ज़

35

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

इस संदर्भ में दृढ़ता तीन क्षेत्रों को शामिल करती है:

  • एपीआई ही, javax.persistenceपैकेज में परिभाषित किया गया है।

  • जावा पर्सिस्टेंस क्वेरी लैंग्वेज (JPQL)।

  • ऑब्जेक्ट-रिलेशनल मेटाडेटा।

    यहाँ छवि विवरण दर्ज करें

स्प्रिंग डेटा जेपीए छाता स्प्रिंग डेटा प्रोजेक्ट का हिस्सा है जो जेपीए आधारित रिपॉजिटरी को लागू करना आसान बनाता है।

विशेषताएं:

  • स्प्रिंग और जेपीए के आधार पर रिपॉजिटरी बनाने के लिए परिष्कृत समर्थन
  • QueryDSL के लिए समर्थन भविष्यवाणी करता है और इस प्रकार JPA प्रश्नों को टाइप करता है
  • डोमेन वर्ग की पारदर्शी ऑडिटिंग
  • पृष्ठ पर अंक लगाना समर्थन, गतिशील क्वेरी निष्पादन, कस्टम डेटा एक्सेस कोड को एकीकृत करने की क्षमता
  • @Queryबूटस्ट्रैप समय पर एनोटेट प्रश्नों की मान्यता
  • XML आधारित इकाई मानचित्रण के लिए समर्थन
  • JavaConfig इंट्रोड्यूस करके रिपॉजिटरी कॉन्फ़िगरेशन आधारित है @EnableJpaRepositories

    यहाँ छवि विवरण दर्ज करें

3

जेपीए

जेपीए एक विनिर्देशन है जो जावा ऑब्जेक्ट को रिलेशनल डेटाबेस सिस्टम में मैप किया जाता है। सिर्फ एक विनिर्देश होने के नाते, जेपीए इंटरफेस, जैसे का एक सेट के होते हैं EntityManagerFactory, EntityManager, और टिप्पणियों कि मदद आप एक डेटाबेस तालिका करने के लिए एक जावा इकाई वस्तु मैप करें।

कई JPA प्रोवाइडर हैं, जैसे HIbernate, EclipseLink, या Open JPA जो आप उपयोग कर सकते हैं।

स्प्रिंग डेटा जेपीए

स्प्रिंग डेटा जेपीए एक जेपीए डेटा एक्सेस एब्सट्रैक्शन है। जेपीए की तरह, स्प्रिंग डेटा जेपीए एक जेपीए प्रदाता के बिना काम नहीं कर सकता है।

स्प्रिंग डेटा जेपीए डीडीडी Repositoryपैटर्न या के लिए एक समाधान प्रदान करता है DAO (Data Acess Object) pattern। यह विधि नाम सम्मेलनों के माध्यम से आपकी ओर से जेपीए प्रश्न भी उत्पन्न कर सकता है।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.