2010-04-01 11 views
5

मैं Java Persistence API पर नया हूं। मैंने अभी इसे सीखा है और अब इसे अपने जावा डेस्कटॉप एप्लिकेशन में उपयोग करना चाहते हैं। लेकिन मेरे पास इसके बारे में निम्नलिखित प्रश्न हैं:जावा पर्सिस्टेंस एपीआई

प्रश्न 1। कौन सा जेपीए कार्यान्वयन आकार में सबसे छोटा है (क्योंकि मैं अपने आवेदन का आकार जितना छोटा हो सकता हूं)?

प्रश्न 2। persistence.xml फ़ाइल में <provider> टैग का मूल्य कैसे प्राप्त करें। मुझे पता है कि इसका मूल्य विक्रेता विशिष्ट है लेकिन मुझे here से डाउनलोड किए गए जेपीए कार्यान्वयन के लिए मूल्य नहीं मिला।

+2

दिलचस्प सवाल (क्यू 1)। –

+1

जिसे संदर्भित किया जा रहा है वह जेपीए का * कार्यान्वयन * नहीं है। यह बस जेपीए एपीआई जार (इंटरफेस का) है और सभी कार्यान्वयन के लिए आवश्यक है। – DataNucleus

उत्तर

5

प्रश्न 1। कौन सा जेपीए कार्यान्वयन आकार में सबसे छोटा है (क्योंकि मैं अपने आवेदन का आकार जितना छोटा हो सकता हूं)?

जेपीए 1.0 के लिए:

  • हाइबरनेट इकाई प्रबंधक 3.4.0.GA: ~ 4.9MB
  • EclipseLink 1.1.3: ~ 4.7MB
  • OpenJPA 1.2.2: ~ 2.7MB (मुझे इस बारे में निश्चित नहीं है, अभी परीक्षण नहीं किया गया है, इसलिए मुझे कुछ जार याद आ रहे हैं)

मैं टॉपलिंक अनिवार्य से दूर रहूंगा।

जेपीए 2.0 के लिएः

  • DataNucleus 2.0.3: ~ 3.7MB
  • EclipseLink 1.2 और 2.0: ~ 4.8MB
  • हाइबरनेट इकाई प्रबंधक 3.5.0-फाइनल: ~ 5.8MB
  • OpenJPA 2.0.0-beta3: नहीं मापा (अभी भी बीटा में)
(JDBC ड्राइवर को छोड़कर निर्भरता सहित)

इन उपायों से मेरे पालतू परियोजना पर किया गया है। व्यक्तिगत रूप से, मैं केवल डेस्कटॉप ऐप के लिए, आकार पर अपनी पसंद का आधार नहीं लगाऊंगा।

प्रश्न 2। Persistence.xml फ़ाइल में टैग का मान कैसे प्राप्त करें।

  • DataNucleus: org.datanucleus.jpa.PersistenceProviderImpl
  • EclipseLink: org.eclipse.persistence.jpa.PersistenceProvider
  • हाइबरनेट: org.hibernate.ejb.HibernatePersistence
  • OpenJPA: org.apache.openjpa.persistence.PersistenceProviderImpl
  • TopLink अनिवार्य: oracle.toplink.essentials.PersistenceProvider
+0

ठीक है ... आप आकार के बावजूद कौन सा कार्यान्वयन चुनेंगे? –

+0

मैं टॉपलिंक अनिवार्यताओं के साथ जाने वाला था। आप उससे दूर क्यों रहेंगे? –

+0

@ यतेन्द्र क्योंकि टॉपलिंक अनिवार्यता (यह बनाए रखा गया है लेकिन मृत) के साथ कुछ भी नहीं होता है, क्योंकि इसे बुनाई की आवश्यकता होती है, क्योंकि आपको एक जावाजेंट का उपयोग करने की आवश्यकता होती है, क्योंकि मुझे हमेशा इसका उपयोग करने में दर्दनाक लगता है (हालांकि यह 5 इकाइयों के साथ दर्दनाक नहीं हो सकता है) । लेकिन यह काम करता है। –

2

क्यू 1। बहुत मोटा गणना:

  • डीबीएस के साथ हाइबरनेट (3.4.0.GA के आसपास संस्करण) सीए है। 3.6 एमबी
  • टॉपलिंक अनिवार्य (2.0.1-04) सीए। 2.4 एमबी
  • एक्लिप्ससेंक (उदा। टॉपलिंक) (1.1.3-एम 1) सीए। 4.7 एमबी।

प्रश्न 2। JAR खोलें, META-INF/services/javax.persistence.spi.PersistenceProvider फ़ाइल देखें।

+0

जेपीए इम्लेमेंटेशन (ग्लासफिश-पर्सिस्टेंस-एपीआई-बी 32 जी) जिसका लिंक मैंने अपने प्रश्न में प्रदान किया है, केवल 50 केबी आकार है। लेकिन इसमें 'मेटा-आईएनएफ' फ़ोल्डर में कोई 'सेवा' फ़ोल्डर नहीं है। –

+0

यह एपीआई है, कार्यान्वयन नहीं। जहां तक ​​मुझे पता है, ग्लासफ़िश EclipseLink का उपयोग आरआई के रूप में करता है। – lexicore

+0

@ बालससी क्या आप 'glassfish-persistence-api-b32g 'जेपीए कार्यान्वयन पर टिप्पणी करना चाहते हैं। मैं इसके निम्नतम आकार (50 केबी) के कारण इसकी तरफ आकर्षित हुआ हूं। –

0

आपका मतलब स्मृति में आकार है? या जार का आकार? स्मृति में आकार इस बात पर निर्भर करता है कि कितने वर्ग बनाए जा रहे हैं, उनके लिए मेटाडेटा, कितने एंटीटीमेनर्स खुले हैं, एल 1/एल 2 कैश में क्या है। मुझे पता है कि डेटा न्यूक्लियस हाइबरनेट की तुलना में कम मेमोरी का उपयोग करता है क्योंकि उपयोगकर्ताओं ने स्वयं रिपोर्ट की है, अन्य प्राथमिक कार्यान्वयन के खिलाफ कोई विचार नहीं है।

एक जार का आकार कुछ भी एक व्यर्थ उपाय है, क्योंकि अधिकांश चीजें उपयोग में नहीं हो सकती हैं।

पीएस। डेटा न्यूक्लियस भी एक जेपीए 1 + 2 कार्यान्वयन

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