2008-09-23 20 views
7

अभी मैं एक बेहद सरल वेबसाइट बना रहा हूं- लगभग 5 पृष्ठ। प्रश्न यह है कि अगर यह कुछ प्रकार के डेटाबेस मैपिंग समाधान को एकीकृत करने के लिए समय के बराबर और मूल्यवान है या यदि सादे पुराने जेएनडीआई का उपयोग करना बेहतर होगा। मेरे पास डेटाबेस से पढ़ने/लिखने के लिए शायद एक दर्जन चीजें होंगी। मुझे लगता है कि मुझे इन प्रौद्योगिकियों की बुनियादी समझ है लेकिन यह अभी भी दस्तावेज़ीकरण का जिक्र कर रहा है। किसी और को पहले निर्णय का सामना करना पड़ा?हाइबरनेट/जेपीए/टॉपलिंक का उपयोग कब करें?

संपादित करें: क्षमा करें, मुझे ऑपरेशन करने के लिए डीबी कनेक्शन और जेडीबीसी को देखने के लिए जेएनडीआई निर्दिष्ट करना चाहिए था।

उत्तर

17

संक्षिप्त उत्तर: यह उस जटिलता पर निर्भर करता है जिसे आप समर्थन देना चाहते हैं।

लांग जवाब:

सबसे पहले, ORM (वस्तु संबंधपरक मानचित्रण - डेटाबेस मानचित्रण के रूप में आप यह कहते हैं -) और JNDI (जावा नामकरण और निर्देशिका इंटरफेस) दो अलग बातें हैं।

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

शायद आपका मतलब "जेडीबीसी" हो सकता है।

अब आपके प्रश्न के लिए: यदि यह आसान हो तो यह एक ओआरएम लागू करना आवश्यक नहीं होगा। संख्या तालिका लगभग 5 - 10 अधिक होगी, और संचालन वास्तव में सरल है, मुझे लगता है।

शायद सादा जेडीबीसी का उपयोग करना पर्याप्त होगा।

यदि आप डीएओ पैटर्न का उपयोग करते हैं तो आप इसे बाद में ओआरएम रणनीति का समर्थन करने के लिए बदल सकते हैं।

इस तरह: आप कर्मचारी तालिका

आपको अपनी ओर से डीबी के सभी क्षेत्रों (यह बहुत लंबा नहीं लेना चाहिए) और तरह के तरीकों के साथ एक EmployeeDaO.java साथ Employee.java बनवाने के कहते हैं:

+findById(id): Employee 
+insert(Employee) 
+update(Employee) 
+delete(Employee) 
+findAll():List<Employee> 

और कार्यान्वयन काफी सीधे आगे है:

select * from employee where id = ? 
insert into employee (bla, bla, bla) values (? , ? , ?) 
update etc. etc 

जब (और अगर) अपने आवेदन भी जटिल हो जाता है आप m एए डीएओ कार्यान्वयन बदलो। उदाहरण के लिए "चयन" विधि में आप ओआरएम ऑब्जेक्ट का उपयोग करने के लिए कोड बदलते हैं जो ऑपरेशन करता है।

public Employee selectById(int id) { 
     // Commenting out the previous implementation... 
     // String query = select * from employee where id = ? 
     // execute(query) 

     // Using the ORM solution 

     Session session = getSession(); 
     Employee e = (Employee) session.get(Employee.clas, id); 
     return e; 
} 

यह एक उदाहरण मात्र, वास्तविक जीवन में आप Abstact कारखाने ORM डीएओ बना सकते हैं हो सकता है, लेकिन उस से Offtopic है।मुद्दा यह है कि आप सरल शुरू कर सकते हैं और desing पैटर्न का उपयोग करके आप आवश्यकता के बाद बाद में कार्यान्वयन बदल सकते हैं।

बेशक यदि आप तकनीक सीखना चाहते हैं तो आप 1 टेबल से भी दूर हो सकते हैं।

एक या दूसरे (ओआरएम समाधान) की पसंद मूल रूप से उस तकनीक पर निर्भर करती है जिसका आप उपयोग कर रहे हैं। उदाहरण के लिए जेबॉस या अन्य ओपनसोर्स उत्पादों के लिए हाइबरनेट महान है। यह ओपनसोर्स है, वहां से सीखने के लिए बहुत सारे संसाधन हैं। लेकिन अगर आप किसी ऐसे चीज का उपयोग कर रहे हैं जिसमें पहले से ही टॉपलिंक (ऑरैकल एप्लिकेशन सर्वर की तरह) है या यदि आधार पहले से ही टॉपलिंक पर बनाया गया है तो आपको उस ढांचे के साथ रहना चाहिए।

वैसे, चूंकि ओरेकल ने बीईए खरीदा, उन्होंने कहा कि वे कोडो (वेबलॉगिक पेरेसिस्टेंस फ्रेमवर्क) को अब "ओरेकल वेबलॉगिक एप्लिकेशन सर्वर" में टॉप्लिंक के साथ बदल रहे हैं।

मैं तुम्हें कुछ संसाधनों जहाँ आप इस बारे में अधिक जानकारी प्राप्त कर सकते हैं छोड़:


पुस्तक, मार्टिन Fowler इस "उद्यम अनुप्रयोग वास्तुकला के पैटर्न" में, बताते हैं, जहां एक या एक और उपयोग करने के लिए, यहाँ सूची है । बनाम वस्तु संबंधपरक व्यवहार पैटर्न डेटा स्रोत वास्तु पैटर्न पर एक नज़र डालें:

PEAA Catalog


डीएओ (डेटा एक्सेस ऑब्जेक्ट) कोर J2EE पैटर्न सूची का हिस्सा है:

The DAO pattern


यह हाइबरनेट के लिए स्टार्टर ट्यूटोरियल है:

Hibernate


Toplink की आधिकारिक पेज:

Toplink


अंत में मैं "लगता है कि" जेपीए का अच्छा लगता है कि तुम प्रदाताओं हाल ही में बदल सकता है।

सरल प्रारंभ करें और फिर विकसित करें।

मुझे उम्मीद है कि इससे मदद मिलती है।

1

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

1

क्या आपका मतलब सादा पुराना जेडीबीसी है? एक छोटी परियोजना ओआरएम ढांचे में से एक को चुनने का एक अच्छा अवसर हो सकता है, खासकर यदि आपके पास समय है।

अधिक जानकारी के बिना एक अनुशंसा एक या दूसरे को प्रदान करना मुश्किल है।

1

अंगूठे का मेरा नियम यह है कि अगर यह केवल पढ़ने के लिए है, तो मैं इसे जेडीबीसी में करने के लिए तैयार हूं, हालांकि मैं हाइबरनेट के प्रकार मैपिंग का लाभ उठाने के लिए SQLQuery के साथ एक खाली हाइबरनेट परियोजना का उपयोग करना पसंद करता हूं। एक बार मुझे लिखना पड़ता है, मैं हाइबरनेट के साथ जाता हूं क्योंकि कुछ विशेषताओं को सेट करना इतना आसान होता है और फिर प्रत्येक कॉलम को अलग-अलग सेट करने से बचाने के लिए कॉल करना आसान होता है। और जब आपको अपरिवर्तित वस्तुओं पर अपडेट से बचने के लिए ऑप्टिमाइज़ करना प्रारंभ करना होता है, तो आप ओआर/एम और इसकी गंदे जांच के साथ बेहतर तरीके से बंद होते हैं। विदेशी कुंजी संबंधों से निपटना एक और संकेत है कि आपको इसे एक बार मैप करने की आवश्यकता है और फिर गेटर्स का उपयोग करें। वही लॉजिक टॉपलिंक पर लागू होगा, हालांकि जब तक मैंने इसे इस्तेमाल नहीं किया है, तब तक उन्होंने 3 साल में एचक्यूएल की तरह कुछ जोड़ा है, हाइबरनेट शुद्ध एसक्यूएल से इस तरह के संक्रमण के लिए बेहतर होगा। ध्यान रखें कि आपको हर ऑब्जेक्ट/टेबल को मैप करने की ज़रूरत नहीं है, केवल वही लोग जहां स्पष्ट लाभ है। मेरे अनुभव में, अधिकांश प्रोजेक्ट जो मौजूदा ओआर/एम का उपयोग नहीं करते हैं, एक नया निर्माण करते हैं, जो एक बुरा विचार है।

1

सर्वोत्तम ओआरएम सीखने का तरीका एक छोटी परियोजना पर है। इस परियोजना पर शुरू करें।

एक बार जब आप इसे लटका लेंगे, तो आप सब कुछ के लिए ओआरएम का उपयोग करेंगे।

ओआरएम के लिए बहुत छोटा नहीं है। अपनी पहली परियोजनाओं के बाद, आप पाएंगे कि आप किसी अन्य तरीके से काम नहीं कर सकते हैं। ओआरएम मानचित्रण आमतौर पर काम करने के किसी भी अन्य तरीके से अधिक समझ में आता है। विभिन्न Toplink गाइड यहाँ पर

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