सब कुछ मैं हाइबरनेट के बारे में पढ़ा कहा गया है कि तुम वापस एक सौदे रोल चाहिए और सत्र बंद एक त्रुटि तब होती है जब, और वहाँ आमतौर पर निम्नलिखित कोड (हाइबरनेट के डॉक्स से लिया गया) के कुछ बदलाव है एक उदाहरण के रूप में दिया:क्या होता है यदि आप हाइबरनेट में लेनदेन वापस नहीं लेते हैं?
Session sess = factory.openSession();
Transaction tx = null;
try {
tx = sess.beginTransaction();
// do some work
...
tx.commit();
} catch (RuntimeException e) {
if (tx != null) tx.rollback();
throw e; // or display error message
} finally {
sess.close();
}
यह पैटर्न कुछ कारणों से मेरे लिए अजीब लगता है। सबसे पहले, यह केवल एक ढांचे के लिए अनुचित रूप से जटिल लगता है जो आमतौर पर चीजों को सरल बनाने की दिशा में तैयार होता है। सबसे महत्वपूर्ण बात यह है कि क्या होता है यदि try
ब्लॉक में कोड RuntimeException
के अलावा कुछ और फेंकता है? ऐसा लगता है कि हाइबरनेट उस मामले में खुले लेनदेन के साथ सत्र को गहराई से बंद करने में सक्षम होना चाहिए, संभवतः इसे वापस रोल करके, लेकिन यदि यह सच है, तो rollback
पर कॉल करने से परेशान क्यों हो?
किसने आपको बताया कि हाइबरनेट चीजों को सरल बनाता है? :) – skaffman