हाइबरनेट एपीआई में, एक संपत्ति hibernate.connection.autocommit है जिसे सत्य पर सेट किया जा सकता है।हाइबरनेट में "hibernate.connection.autocommit = true" क्यों अनुशंसित नहीं है?
लेकिन एपीआई में, वे उल्लेख किया है कि यह इतना है कि यह निर्धारित करने के लिए अनुशंसित नहीं है:
JDBC जमा कनेक्शन के लिए सक्षम बनाता है autocommit (यह नहीं है अनुशंसित)।
इसकी अनुशंसा क्यों नहीं की जाती है? इस संपत्ति को सही करने के दुष्प्रभाव क्या हैं?
हाइबरनेट एचडी के तहत जेडीबीसी का उपयोग करता है। ऑटोकॉमिट जेडीबीसीसीनेक्शन की अवधारणा है, जिसका अर्थ है "प्रति विवरण लेनदेन"। लेनदेन का दायरा = 1 वर्ग कथन [autocommit = true] hibernate.connection.autoCommit = सत्य प्रत्येक कथन को समाप्त होने के बाद प्रतिबद्ध करता है, इसलिए हम काम की एकल इकाई के हिस्से के रूप में 2 या अधिक कथन/रोलबैक नहीं कर सकते हैं। हम चाहते हैं- या तो सभी कथन चलाएं या कोई भी रन न चलाएं - इसके लिए हमें लेनदेन की शुरुआत और अंत को चिह्नित करने की आवश्यकता है और हमें ऑटोकॉमिट को अक्षम करने की आवश्यकता है। –
hibernate.connection.autocommit = false 2 परिदृश्य स्पष्ट लेन-देन सीमा:। sessionFactory.openSession() session.beginTransaction() session.getTransaction() के लिए प्रतिबद्ध() // Flushes सत्र, प्रतिबद्धता TXN सत्र। करीब() अंतर्निहित लेन-देन सीमा sessionFactory.openSession() // कोई लेन-देन के उपयोग, // लेकिन इसके अंतर्निहित TXN देखें क्योंकि - Autocommit यहाँ गलत है session.flush() session.close() - जब हम सत्र बंद करते हैं, विशिष्ट एयनियन स्पष्ट नहीं है तो विक्रेता विशिष्ट व्यवहार ओरेकल में - सभी एसक्यूएल स्टेटमेंट पोस्टग्रेस्क्ल में प्रतिबद्ध होते हैं - सभी एसक्यूएल स्टेटमेंट रोलबैक –