मुझे हाल ही में एक मध्यम आकार के विरासत कोड बेस (3.x से 5.2 तक) में हाइबरनेट निर्भरता (दूसरों के बीच) के संस्करण को टक्कर देने की अनुमति दी गई थी। कोड स्वयं आंशिक रूप से 10 साल से अधिक है लेकिन अभी भी दैनिक उपयोग में है।विरासत हाइबरनेट अनुप्रयोगों के लिए इच्छित अपग्रेड पथ क्या है?
तो संस्करण को बढ़ाने और पोर्टिंग को बढ़ाने के बाद भी अब तक एपीआई कॉलों को अपने रक्तस्राव किनारे के समकक्षों से हटा दिया गया है या यहां तक कि गायब इलाकों को भी छोड़ दिया गया है (स्कीमाएक्सपोर्ट कैसे करना है यह जानने का एक विशेष अनुभव था) मुझे अभी भी यह नहीं दिख रहा है एक पूर्ण प्रवासन के रूप में।
मैं सोच रहा हूं कि विरासत उपयोगकर्ताओं के लिए इच्छित अपग्रेड पथ क्या होता है क्योंकि अक्सर एंटरप्राइज़ सिस्टम 10 से 15+ साल के आसपास होंगे और कभी-कभी आपको आवश्यक बगफिक्स या विशेषताओं के लिए एक नए निर्भरता संस्करण पर कूदने की आवश्यकता होती है।
निम्नलिखित बातों को कुछ हद तक अभी भी खुले हैं:
जेपीए एनोटेशन को .hbm.xml मैपिंग जानकारी विस्थापित करने के लिए कोई स्पष्ट या स्वचालित तरीका नहीं है। मुझे पता है कि मैन्युअल माइग्रेशन बहुत त्रुटि प्रवण होगा और सभी अवधारणाओं में स्पष्ट या स्पष्ट काउंटर पार्ट्स नहीं हैं।
अब हमें पुराने मानदंड एपीआई के उपयोग के बारे में बहुत सी बहिष्करण चेतावनियां (org.hibernate.orm.deprecation) मिलती हैं लेकिन कोई स्पष्ट अपग्रेड पथ भी नहीं है। कोई भी एप्लिकेशन के पूरे डीबी एक्सेस कोड को पूरी तरह से अलग और अधिक वर्बोज़ एपीआई पर फिर से लिख नहीं सकता है जो निश्चित रूप से कुछ किनारे के मामलों में अलग-अलग व्यवहार करेगा।
हम
org.hibernate.transform.ResultTransformer
के कई मूल प्रश्नों और उदाहरणों का उपयोग करने लगते हैं, फिर भीorg.hibernate.query.Query#setResultTransformer()
इस पर काम करने के तरीके के बारे में कोई संकेत नहीं दिया गया है।
सामान्य तौर पर मैं प्रतिवाद बारे में दस्तावेज़ प्राप्त और एक litte दुर्लभ हाइबरनेट की ओर पथ का उन्नयन करना है। मैं समझता हूं कि यह एक ओपन सोर्स प्रोजेक्ट है और वे हमेशा के लिए पुरानी एपीआई बनाए रखना नहीं चाहते हैं, लेकिन फिर भी मैं थोड़ा खो रहा हूं और मुझे विश्वास नहीं है कि यह अभी भी उपयोग में एकमात्र विरासत जावा एप्लिकेशन है आज।
आपकी अधिकांश चिंताओं को एकीकरण परीक्षण के अस्तित्व से ढंक दिया जाता है। यह देखते हुए कि आप विरासत प्रणाली पर काम करते हैं, मैं इसे लेता हूं कि आपके पास नहीं है। यह आपकी मुख्य समस्या होगी, तथ्य यह नहीं कि हाइबरनेट समय के साथ विकसित हुआ। मैंने एक समान अपग्रेड किया लेकिन सर्वर को अपग्रेड किया (जेबॉस 5.1 से वाइल्डफ्लाई 9) और जेएसएफ (1.2 + जेबॉस सीम जेएसएफ 2.2 + प्राइमफेस तक) - यह एक परेशान अनुभव था जिसमें 6 महीने का कोड रीडिज़ाइन हुआ था। यह विरासत प्रणाली के साथ ही है - और क्यों कई अपग्रेड नहीं करना चुनते हैं। – Gimby
आपके आवेदन में कौन से पैटर्न और तकनीक उपयोग कर रहे हैं? मेरा मतलब है कि आप सेवा परत के लिए एमवीसी का उपयोग करते हैं, क्या आप स्प्रिंग, ईजेबी या कुछ पसंद करते हैं। –
क्या मेरा सुझाव है कि आप 5.1 तक अपग्रेड करें और अभी तक 5.2 नहीं? 5.2 हाइबरनेट 6 की ओर "सड़क को फ़र्श" करने के बारे में बहुत कुछ है, और कुछ चीजों को छोड़कर जो हम जानते हैं उन्हें हटा दिया जाएगा, लेकिन वास्तव में सब कुछ स्पष्ट नहीं है। इसके अलावा कुछ बदलाव थोड़ा दूर गए, और हम 5.2.1 में थोड़ा सा बहाल कर रहे हैं, यानी https://hibernate.atlassian.net/browse/HHH-10877 – Sanne