चूंकि स्प्रिंग EJB की तरह ही लेनदेन का उपयोग करने में सक्षम है । मेरे लिए, स्प्रिंग EJB का उपयोग करने की आवश्यकता को बदलने में सक्षम है। क्या कोई मुझे बता सकता है कि ईजेबी का उपयोग करने के अतिरिक्त फायदे क्या हैं?
जवाबों:
वसंत अपनी शुरुआत से ही EJB के विकल्प के रूप में विकसित किया गया था, इसलिए इसका उत्तर यह है कि आप EJB के स्थान पर Spring का उपयोग कर सकते हैं।
यदि EJBs का उपयोग करने के लिए "लाभ" है, तो मैं कहूंगा कि यह आपकी टीम के कौशल पर निर्भर करेगा। यदि आपके पास कोई स्प्रिंग विशेषज्ञता नहीं है, और बहुत सारे ईजेबी अनुभव हैं, तो शायद ईजेबी 3.0 के साथ चिपके रहना एक अच्छा कदम है।
EJB मानक का समर्थन करने के लिए लिखे गए ऐप सर्वर, सिद्धांत रूप में, एक आज्ञाकारी जावा EE ऐप सर्वर से दूसरे में पोर्ट किए जा सकते हैं। लेकिन इसका मतलब है कि किसी भी और सभी विक्रेता-विशिष्ट एक्सटेंशन से दूर रहना जो आपको एक विक्रेता में बंद कर देता है।
ऐप सर्वर (जैसे, वेबलॉग, टॉमकैट, जेओएसओएस आदि) के बीच आसानी से स्प्रिंग पोर्ट क्योंकि यह उन पर निर्भर नहीं करता है।
हालाँकि, आप स्प्रिंग में बंद हैं।
वसंत अच्छा OO डिजाइन प्रथाओं (जैसे, इंटरफेस, परतें, चिंताओं को अलग करना) को प्रोत्साहित करता है जो किसी भी समस्या को छूने में लाभान्वित करते हैं, भले ही आप Guice या किसी अन्य DI ढांचे पर स्विच करने का निर्णय लें।
अद्यतन: यह सवाल और जवाब 2014 में पांच साल पुराना है। यह कहने की जरूरत है कि प्रोग्रामिंग और अनुप्रयोग विकास की दुनिया ने उस समय में बहुत कुछ बदल दिया है।
यह अब केवल जावा या सी #, स्प्रिंग या ईजेबी के बीच चयन नहीं है। Vert.x के साथ जावा ईई को पूरी तरह से बचाना संभव है। आप ऐप सर्वर के बिना अत्यधिक स्केलेबल, पॉलीग्लॉट एप्लिकेशन लिख सकते हैं।
अपडेट: इट्स मार्च 2016। स्प्रिंग बूट जावा ईई ऐप सर्वर के बिना एप्लिकेशन लिखने का एक बेहतर तरीका प्रदान करता है। आप एक निष्पादन योग्य JAR बना सकते हैं और इसे JVM पर चला सकते हैं।
मुझे आश्चर्य है कि अगर ओरेकल जावा ईई कल्पना का समर्थन करना जारी रखेगा। ईजेबी के लिए वेब सेवाओं ने कार्यभार संभाल लिया है। EJB समाधान मृत है। (एकदम मेरे विचार।)
पहले, मुझे यह स्पष्ट रूप से कहने दें, मैं यह नहीं कह रहा हूं कि आपको स्प्रिंग का उपयोग नहीं करना चाहिए, लेकिन क्योंकि आप कुछ फायदे पूछ रहे हैं, यहां कम से कम दो विकल्प हैं:
EJB 3 एक मानक है जबकि स्प्रिंग नहीं है (यह एक वास्तविक मानक है लेकिन यह एक ही बात नहीं है) और यह भविष्य के भविष्य में नहीं बदलेगा। यद्यपि आप किसी भी एप्लिकेशन सर्वर के साथ स्प्रिंग फ्रेमवर्क का उपयोग कर सकते हैं, स्प्रिंग एप्लिकेशन को स्प्रिंग में ही और विशिष्ट सेवाओं को लॉक करने के लिए चुना जाता है।
स्प्रिंग फ्रेमवर्क एप्लिकेशन सर्वर और सेवा पुस्तकालयों के शीर्ष पर बैठता है। सेवा एकीकरण कोड (जैसे डेटा एक्सेस टेम्प्लेट) फ्रेमवर्क में रहता है और एप्लिकेशन डेवलपर्स के संपर्क में है। इसके विपरीत, EJB 3 फ्रेमवर्क को एप्लिकेशन सर्वर में एकीकृत किया जाता है और सर्विस इंटीग्रेशन कोड को एक इंटरफेस के पीछे रखा जाता है। EJB 3 विक्रेता इस प्रकार एप्लिकेशन सर्वर स्तर पर काम करके प्रदर्शन और डेवलपर अनुभव को अनुकूलित कर सकते हैं। उदाहरण के लिए, वे JPA लेनदेन प्रबंधन के साथ JPA इंजन को निकटता से जोड़ सकते हैं। एक अन्य उदाहरण क्लस्टरिंग समर्थन है जो ईजेबी 3 डेवलपर्स के लिए पारदर्शी है।
EJB 3 हालांकि सही नहीं है, लेकिन इसमें अभी भी कुछ फीचर्स (जैसे कि साधारण POJOs जैसे गैर प्रबंधित घटकों के इंजेक्शन) की कमी है।
पास्कल के अंक मान्य हैं। हालांकि, वसंत के पक्ष में निम्नलिखित हैं।
EJB विनिर्देश वास्तव में थोड़ा ढीला है, और इसलिए विभिन्न एप्लिकेशन सर्वरों के साथ अलग-अलग व्यवहार देखे जा सकते हैं। यह ज्यादातर मामलों के लिए सही नहीं होगा, निश्चित रूप से, लेकिन मुझे कुछ "अंधेरे कोनों" के लिए ऐसी समस्या थी।
वसंत में बहुत सारे अतिरिक्त उपहार हैं, जैसे वसंत-परीक्षण, एओपी, एमवीसी, जेएसएफ एकीकरण, आदि। ईजेबी में उनमें से कुछ हैं (इंटरसेप्टर, उदाहरण के लिए), लेकिन मेरी राय में वे इतने विकसित नहीं हैं।
अंत में, यह मुख्य रूप से आपके सटीक मामले पर निर्भर करता है।
EJBContainer.createEJBContainer()
एक एम्बेडेड कंटेनर का उपयोग करने के लिए मानक एपीआई है। तो, फिर भी, आपका कथन गलत है।
स्प्रिंग ईजेबी के पूरक के लिए है, इसे प्रतिस्थापित करने के लिए नहीं। स्प्रिंग EJB के ऊपर एक परत है। जैसा कि हम जानते हैं, EJB की कोडिंग एपीआई का उपयोग करके की जाती है, जिसका अर्थ है कि हमें स्प्रिंग फ्रेमवर्क का उपयोग करके एपीआई में सब कुछ लागू करना होगा। हम बॉयलर-प्लेट कोड बना सकते हैं, फिर बस उस प्लेट को ले सकते हैं, उसमें कुछ सामान जोड़ सकते हैं, फिर सब कुछ किया जाता है। आंतरिक रूप से स्प्रिंग ईजेबी के साथ जुड़ा हुआ है - स्प्रिंग ईजेबी के बिना मौजूद नहीं होगा।
स्प्रिंग का उपयोग करने का मुख्य लाभ यह है कि कक्षाओं के बीच कोई युग्मन नहीं है।