2011-01-31 7 views
7

मेरी सेवा वर्ग में मैं की तरह कुछ करना चाहते हैं। मैं हाइबरनेट से इतना परिचित नहीं हूं, लेकिन मुझे लगता है कि यदि सेवा विधियों की जांच की जाती है तो लेनदेन मौजूद है, इसका उपयोग करें, अन्यथा एक नया बनाएं और इसे बंद करें।हाइबरनेट सक्रिय लेन-देन

यदि यह संभव है, तो क्या कोई प्रदर्शन कारण (या अन्य) है जो मुझे ध्यान में रखना चाहिए? या यह इस तरह की चीज करने का कोई और तरीका है?

सादर

उत्तर

12

lweller के जवाब की तरह विचार करेगा मेरा उत्तर तुलना में एक अधिक उपयुक्त तरीका है, लेकिन आप session.getTransaction().isActive()

को फोन करके एक सौदे के राज्य जाँच कर सकते हैं

Hibernate Transaction के लिए javadoc देखें।

+0

मुझे लगता है, session.getTransaction() निश्चित रूप से हमेशा एक सक्रिय लेनदेन देता है ... तो मेरे लिए काम नहीं कर रहा है (एटलेस्ट) .... क्या कोई अन्य समाधान है? –

3

मूल रूप से आप किसी भी मामले में session.beginTransaction(); कॉल कर सकते हैं के रूप में यह हाइबरनेट की JavaDoc द्वारा निर्दिष्ट किया जाता:

काम की एक इकाई शुरू और जुड़े लेन-देन वस्तु लौटने। यदि एक नया अंतर्निहित लेनदेन की आवश्यकता है, लेनदेन शुरू करें। अन्यथा मौजूदा अंतर्निहित लेनदेन के संदर्भ में नया कार्य जारी रखें।

लेकिन मैं गंभीरता से लेन-देन प्रबंधन के लिए एक रूपरेखा का उपयोग, spring

+0

मैं पूरी तरह से सहमत हूं। काम की हमारी जगह पर, वे वसंत का उपयोग नहीं करते हैं और यह सभी तरह के हाइबरनेट लेनदेन के मुद्दों का कारण बनता है। – blackpanther

संबंधित मुद्दे