मेरे पास एक ऐसा एप्लिकेशन है जो हाइबरनेट 4.x का उपयोग करता है, और वर्तमान में यह देशी हाइबरनेट एपीआई का उपयोग कर रहा है (जिसका अर्थ है कि मेरे पास SessionFactory
और Session
एस है)। मैं सिर्फ noticed कि मौजूदा मानदंड एपीआई जेपीए के (बेहतर) मानदंड एपीआई के पक्ष में पदावनत किया गया है:जेपीए-शैली मानदंड/मानदंड हाइबरनेट सत्र से प्रश्नकर्ता प्रश्न
हाइबरनेट एक पुराने, लीगेसी
org.hibernate.Criteria
एपीआई पदावनत विचार किया जाना चाहिए जो प्रदान करता है। कोई सुविधा विकास उन एपीआई को लक्षित नहीं करेगा। आखिरकार, हाइबरनेट-विशिष्ट मानदंड सुविधाओं को जेपीएjavax.persistence.criteria.CriteriaQuery
में एक्सटेंशन के रूप में पोर्ट किया जाएगा।
मैं EntityManager
सीधे का उपयोग कर (भले ही यह वहाँ से एक हाइबरनेट Session
पाने के लिए आसान है) क्योंकि हम विन्यास तर्क यह है कि करने की आवश्यकता होगी हाइबरनेट कस्टम की एक बड़ी राशि के लिए अपने आवेदन से अधिक कन्वर्ट करने के लिए है नहीं करना चाहती प्रतिस्थापित किया। इसके बावजूद, मैं निश्चित रूप से जेपीए मानदंड एपीआई का उपयोग करना शुरू करना चाहता हूं, क्योंकि पुरानी एपीआई को बहिष्कृत किया गया है (और भविष्य में कुछ यादृच्छिक बिंदु पर संभावित रूप से गायब हो जाएगा, अगर पिछले हाइबरनेट रिलीज किसी भी संकेत हैं) और वे भी बेहतर प्रकार की सुरक्षा प्रदान करते हैं।
यदि मैं सत्र कारखाना/सत्र का उपयोग कर रहा हूं, तो मैं नए मानदंड/मानदंडबिल्डर एपीआई का उपयोग कैसे कर सकता हूं?
वर्तमान में आप अपने सत्र कैसे प्राप्त कर रहे हैं? क्या यह एक केंद्रीय स्थान पर है? यदि ऐसा है तो आपको इसे बदलने में सक्षम होना चाहिए ताकि आप अपने सत्र EntityManager से प्राप्त कर सकें जैसे कि आपके पास ईएम तक पहुंच हो। समस्या यह है कि सत्र का उपयोग EntityManager द्वारा किया जाता है, न कि दूसरी तरफ।लेकिन यदि आप अपना उच्च स्तर का उपयोग EntityManager करते हैं और उस से सत्र प्राप्त करें (इसलिए आप पुराने कोड को नहीं तोड़ते हैं) तो आप बेहतर होंगे। –
यह कोड के केंद्रीय भाग में है, लेकिन मेरी चिंता का एक हिस्सा यह है कि हमारे पास हाइबरनेट (प्रोग्रामेटिक रूप से) कॉन्फ़िगर करने के लिए एक जटिल जटिल कॉन्फ़िगरेशन सिस्टम है और मुझे यकीन नहीं है कि मैं इसे जेपीए के साथ दोहरा सकता हूं। यदि जेबए के मानदंड के पक्ष में हाइबरनेट के मानदंड को बहिष्कृत किया गया है, लेकिन इसे हाइबरनेट एपीआई से एक्सेस करने का कोई तरीका नहीं है, तो मुझे उम्मीद थी कि वे हाइबरनेट कॉन्फ़िगरेशन एपीआई को भी हटा देंगे (इसके बजाय ऐसा लगता है कि वे बड़े पैमाने पर निर्माण करना जारी रखते हैं config एपीआई हाइबरनेट) –
यह सच है, लेकिन जैसे आप मिश्रण और जेपीए से मेल खाते हैं और इस तरह से हाइबरनेट कर सकते हैं यह प्रतीत नहीं होता। यहां तक कि यदि आप EntityManager के बिना CriteriaQuery उदाहरण प्राप्त करते हैं, तो आपको इसके साथ एक क्वेरी निष्पादित करने के लिए एक ईएम की आवश्यकता होगी। –