मैं सोच रहा था कि जावा पर एचबी का उपयोग करके एक पृथक ऑब्जेक्ट के कुछ फ़ील्ड को अपडेट करने का सबसे अच्छा तरीका क्या है। विशेष रूप से जब ऑब्जेक्ट में बच्चे ऑब्जेक्ट गुण होते हैं। उदाहरण के लिए (एनोटेशन हटा दिया और संख्या शोर को कम करने के लिए कम क्षेत्र):हाइबरनेट पर एक अलग ऑब्जेक्ट के कुछ फ़ील्ड को अपडेट करने का सबसे अच्छा तरीका?
public class Parent {
int id;
String field2;
...
Child child;
}
public class Child {
int id;
String field3;
}
एक MVC webapp मैं Session.get (Parent.class, 123) का उपयोग कर एक माता पिता के उदाहरण के लिए कह सकते हैं में एक जनक अपडेट करते समय, एक फॉर्म को पॉप्युलेट करने और इसे प्रदर्शित करने के लिए इसका इस्तेमाल करें। कोई डीटीओ नहीं, सिर्फ विचलित माता-पिता को देखने के लिए पास किया जाता है और एक रूप से बांध दिया जाता है। अब, मैं केवल उपयोगकर्ता को फ़ील्ड 2 अभिभावक की विशेषता को अद्यतन करने की अनुमति देना चाहता हूं। तो जब उपयोगकर्ता फॉर्म पोस्ट करता है तो मुझे आईडी और फ़ील्ड 2 भरने के साथ एक अभिभावक उदाहरण मिलता है (मुझे लगता है कि एमवीसी फ्रेमवर्क यहां कोई फर्क नहीं पड़ता है, बाध्यकारी होने पर सभी अधिकतर व्यवहार करते हैं)।
अब, इकाई का अद्यतन करने के लिए कौन सी रणनीति सर्वोत्तम है? मैं कुछ विकल्प में सोच सकते हैं, लेकिन मैं फिर से सत्र से अभिभावकीय उदाहरण पुनर्प्राप्त विशेषज्ञों :) (याद रखें कि मैं माता-पिता और बच्चे के उदाहरणों के बीच संबंधों को ढीला करने के लिए चाहते हैं)
ए) सुनना चाहते हैं और हाथ से प्रतिस्थापित करें
Parent pojoParent; //binded with the data of the Form.
Parent entity = Session.get(Parent.class,pojoParent.getId());
entity.setField2(pojoParent.getField2()).
मैं इसका बहुत उपयोग कर रहा हूं। लेकिन pojoParent एक अंडरवर्कर डीटीओ के रूप में इस्तेमाल किया प्रतीत होता है। अगर यह अद्यतन करने के लिए फ़ील्ड की संख्या बड़ी हो जाती है तो यह भी भयानक हो जाता है।
बी) बच्चे को कहीं भी स्टोर करें (httpSession?) और बाद में इसे संबद्ध करें।
Parent parent = Session.get(Parent.class,123);
//bind the retrieved parent to the form
// store the Child from parent.getChild() on the httpSession
...
//when the users submits the form...
pojoParent.setChild(someHttpSessionContext.getAttribute('Child'))
Session.save(pojoParent);
मुझे लगता है कि यह बकवास है, लेकिन मैं कुछ परियोजनाओं में यह देखा ...
सी) जनक और inmutable के रूप में बाल के बीच संबंध सेट करें। रिश्ते पर अद्यतन करने योग्य = झूठी का उपयोग करके मैं बच्चे को खोने के बारे में चिंता किए बिना किसी भी मूल क्षेत्र को अपडेट कर सकता हूं। वैसे भी, यह काफी प्रतिबंधित है और रिश्ते को कभी अपडेट नहीं किया जाएगा।
तो, आपको इस स्थिति को हल करने का सबसे अच्छा तरीका क्या है?
अग्रिम धन्यवाद!