हल्के वजन हाइबरनेट के लिए वैकल्पिक? [बन्द है]


113

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


2
आप यहां उदाहरण उपयोग (और स्प्रिंग के साथ उदाहरण विन्यास) के साथ विकल्पों की जांच कर सकते हैं: github.com/bwajtr/java-persistence-frameworks-comparison
Břetislav Wajtr

CMobileCom JPA जावा और Android दोनों के लिए एक हल्के वजन वाला JPA कार्यान्वयन है। इसका आकार लगभग 380K है। यह हल्का और तेज है। cmobilecom.com
जॉन

जवाबों:


142

यदि आप एनोटेशन का उपयोग करते हैं तो हाइबरनेट को शून्य कॉन्फ़िगरेशन के बगल में होना चाहिए। यहां तक ​​कि यह क्लासपैथ में मैप किए गए बीन्स को ऑटो-डिस्कवर कर सकता है! मुझे सादगी से इसका कोई विकल्प नहीं दिखता है और शक्ति के दृष्टिकोण ।

यह खुद को जेपीए के रूप में भी उजागर कर सकता है, जो (आईएमएचओ) और भी सरल है।


32
शून्य के बगल में शून्य नहीं है।
njzk2

12
यह भी एक बहुत बाहरी पुस्तकालयों Android पर इसका इस्तेमाल करने की कोशिश की जरूरत है: पी
sherif

4
मैंने हाइबरनेट का एक सरल विकल्प खोजने की कोशिश की। एक व्यक्तिगत परियोजना में, मैंने MyBatis (एक भयानक नाम) का उपयोग किया। यह हाइबरनेट की तुलना में बहुत अधिक काम था। हाइबरनेट वास्तव में SQL कोडिंग का एक बहुत बचाता है और माता-पिता-बच्चे के रिश्तों के साथ मदद करता है। मैंने जावा के लिए कुछ ActiveRecord स्टाइल ORM को भी देखा। किसी को भी हाइबरनेट की तुलना में परिपक्व या कोई आसान नहीं लगा। इसलिए, मैं हाइबरनेट वापस जा रहा हूं।
देवदंके

56
सवाल एक सवाल के बारे में नहीं था?
औकाज़ ग्रुनर

8
हाइबरनेट, हाइबरनेट के लिए एक हल्का विकल्प नहीं है
cosbor11

55

माई ओरमलाइट लाइब्रेरी ऐसा ही एक विकल्प है। यह MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB, और Sqlite का समर्थन करता है, और आसानी से दूसरों के लिए बढ़ाया जा सकता है। यह वर्गों को कॉन्फ़िगर करने के लिए एनोटेशन का उपयोग करता है, अच्छा स्प्रिंग सपोर्ट, लचीला क्वेरी बिल्डर, आदि।


ऑरमलाइट वास्तव में आशाजनक लग रहा है! लेकिन क्या यह परियोजना अभी भी जीवित है? एक साल से अधिक के लिए कोई नया संस्करण, जीथब पर अनुरोधों / मुद्दों को खींचने का कोई जवाब नहीं।
स्टीफन

3
संस्करण 5.0 जून 2016 में जारी किया गया था।
लॉरी लांटी

संस्करण 5.1 2/19/2018 को जारी किया गया था। लेकिन हाइबरनेट के लिए बिल्कुल भी तुलनीय नहीं है और कुछ JPA एनोटेशन कार्यान्वयन ठीक से काम नहीं करता है।
एम-रज़ावी

"हाइबरनेट के लिए तुलनीय"? वे दोनों ओआरएम हैं लेकिन अन्यथा बहुत अलग हैं। JPA के कार्यान्वयन के संदर्भ में, यदि आप कुछ @ M-Razavi पाते हैं, तो pls एक बग रिपोर्ट भरें।
ग्रे

31

इसके लिए अभी भी XML कॉन्फ़िगरेशन की आवश्यकता है, लेकिन MyBatis (पूर्व में iBatis) पर एक नज़र है ।


iBatis बहुत हल्का है। आप ऑब्जेक्ट मैपिंग के लिए अपने एसक्यूएल को अधिक आसानी से परिभाषित और नियंत्रित कर सकते हैं।
बर्लिन ब्राउन

... iBatis के लिए एक वोट फेंकना है, हालांकि मन में है कि यह एक ORM विकल्प नहीं है क्योंकि यह हाइबरनेट की पसंद के साथ प्रतिस्पर्धा करने की कोशिश नहीं कर रहा है। यह थोड़ा अलग तरह का जानवर है, लेकिन वजन के लिहाज से जो आप देख रहे हैं वह फिट बैठता है।
वेक्टर

1
अब यह माईबैटिस बचा है: mybatis.org
व्लादिस्लाव रैस्ट्रुस

3
मुझे लगता है कि XML in i / MyBatis वास्तव में एक फायदा है क्योंकि यह एक प्रारूप में जटिल प्रश्नों को रखता है जिसे परीक्षण के लिए SQL कंसोल में आसानी से कॉपी किया जा सकता है।
पीटर टिलमन्स

22

एक धाराप्रवाह DSL के साथ jOOQ जहाज सीधे जावा में अपने मुख्य लक्ष्यों के लिए साइड-इफेक्ट के रूप में एसक्यूएल का अनुकरण कर रहे हैं:

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

इस लेख में jOOQ के बारे में पढ़ें: http://java.dzone.com/announcements/simple-and-intuitive-approach , या सीधे वेबसाइट पर जाएँ: http://www.jooq.org

(अस्वीकरण, मैं jOOQ के पीछे कंपनी के लिए काम करता हूं)


3
jOOQ चट्टानें! हमने इसके साथ एक बड़े पैमाने पर ETL सेवा को लागू किया, और अधिक खुश नहीं रह सके। मैंने iBATIS का उपयोग किया है, और jOOQ XML के स्थानों और प्रकार की सुरक्षा के अभाव के बिना निम्न स्तर SQL के सभी समान लाभ देता है।
spieden

3
मैं jOOQ की सबसे अच्छी विशेषताओं में से एक का उल्लेख करना भूल गया: जटिल और / या गतिशील रूप से उत्पन्न प्रश्नों को एक नियंत्रित तरीके से इकट्ठा किया जा सकता है और जावा कंपाइलर द्वारा सत्यापित किया जा सकता है, जो आपको उन सभी अस्पष्ट सिंटैक्स त्रुटियों डेटाबेस से बचाते हैं, और संकलन-समय प्रतिगमन प्रदान करते हैं। आपके लिए स्कीमा कब बदलता है इसके लिए कवरेज।
spieden

JOOQ आश्चर्यजनक है, लेकिन जाहिर है कि यह अब ओरेकल और साइबेस के लिए स्वतंत्र नहीं है, इसलिए बहुत से लोग इस ढांचे से बच रहे हैं और MyBatis
Makky

@ मैककी: आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे आशा है कि आप वास्तविक मूल्य प्रस्तावों को ध्यान में रख रहे हैं, और आप केवल इस तथ्य के आधार पर पूरी तरह से अलग ढांचे पर स्विच करने नहीं जा रहे हैं कि एक स्वतंत्र है और दूसरा नहीं है। रखरखाव और प्रवासन की लागत यह आपके सॉफ्टवेयर में प्रेरित करेगा निषेधात्मक और किसी भी उचित वाणिज्यिक लाइसेंस से परे ...
लुकास ईडर

15

अपाचे कॉमन्स DBUtils JDBC प्रोग्रामिंग के बाहर दोहराए गए ग्रन्टवर्क के बहुत कुछ लेता है। इसके लिए थोड़े विन्यास की आवश्यकता होती है और इसे सीखना आसान होता है। यह ओआरएम फ्रेमवर्क नहीं है (जिस तरह से हाइबरनेट और यहां बताए गए अन्य फ्रेमवर्क हैं) लेकिन यह जावा सदस्य क्षेत्रों के साथ-साथ अन्य दोहराए जाने वाले जेडीबीसी प्रोग्रामिंग कार्यों के लिए सेलेक्ट कॉलम की स्वचालित मैपिंग करता है। यह निश्चित रूप से हल्का है।


12

आप Ebean ORM पर एक नज़र डाल सकते हैं । - कोई सत्र नहीं - आलसी लोडिंग सिर्फ काम करती है - सरल एपीआई का उपयोग करने और सीखने के लिए।


यह SQLite और Android के साथ संगत है?
एंड्रीहा

SQLite समर्थन जोड़ा गया है। मैंने इसे Android पर अभी तक आज़माया नहीं है।
रोब ब्यग्रेव

9

केयेन ने मेरी अच्छी सेवा की है। अपेक्षाकृत आसानी से समझने और इसे पाने और चलाने के लिए। मुझे रिवर्स इंजीनियरिंग भाग विशेष रूप से आकर्षक लगता है। कॉन्फ़िगरेशन GUI के साथ किया जा सकता है।


6

मैं अपाचे साम्राज्य-डीबी प्रस्तावित कर सकता हूं। http://incubator.apache.org/empire-db/

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

एक उदाहरण:

// Define the query
DBCommand cmd = db.createCommand();
DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ")
                        .append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");
// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);
// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);
// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;


2

मुझे पार्टी में थोड़ी देर हो सकती है, लेकिन मैंने 2010 में ActiveJDBC जारी किया , जो कि ActiveRecord पैटर्न का एक ORM कार्यान्वयन है, यह निर्भरता में हाइबरनेट की तुलना में 10 गुना अधिक हल्का है, कम से कम दो बार रन के समय में तेज है, और शून्य कॉन्फ़िगरेशन की आवश्यकता है या एनोटेशन।


1

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




-2

काइटफ्रैमवर्क भी बहुत हल्का ऑरम फ्रेमवर्क है। यह न्यूनतम कॉन्फ़िगरेशन के साथ लगभग सभी डीबी ऑपरेशन प्रदान करता है।

http://deipakgarg.github.com/Kite-ORM/

प्रकटीकरण: मैं इस परियोजना का लेखक हूं


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

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