2013-01-18 4 views
5

मेरे पास ऐसा कोड है जो इस तरह दिखता है।देशी हाइबरनेट सत्र प्राप्त करने के लिए इकाई प्रबंधक पर अनचाहे विधि का उपयोग करने के बाद मुझे दोनों को बंद करना होगा?

this.entityManager = AppFactory.instance().getEntityManagerFactory().createEntityManager(); 
this.hibernateSession = entityManager.unwrap(Session.class); 
try{ 
//do some queries using both entityManager and hibernateSession 
}finally{ 
this.entityManager.close(); 
} 

लेकिन मुझे लगता है कि कहीं कनेक्शन कनेक्शन रिसाव है। मैं सोच रहा हूं कि क्या मुझे इकाई प्रबंधक और हाइबरनेट सत्र दोनों को बंद करना है। क्या किसी और ने इस तरह की स्थिति के साथ काम किया है?

उत्तर

0

मैं हाइबरनेट के बारे में पता नहीं है, लेकिन EclipseLink में वे विशेष रूप से कहते हैं कि खोलना के माध्यम से कनेक्शन पुन: प्राप्त करने से पहले आप एक सौदे में रहना होगा कि:

entityManager.getTransaction.begin(); 
this.hibernateSession = entityManager.unwrap(Session.class); 
... 
entityManager.getTransaction.commit(); 
:

http://wiki.eclipse.org/EclipseLink/Examples/JPA/EMAPI#JPA_2.0

तो यह कोशिश

3

आपको हूड के तहत सत्र और EntityManger दोनों को बंद करने की आवश्यकता नहीं है, हाइबरनेट में एंटीटीमेनर वास्तव में सत्र को हाइबरनेट करता है। अनवरत कॉलिंग आपको अंतर्निहित सत्र पास कर देगा। तो उनमें से एक बंद करना ठीक है।
कनेक्शन रिसाव के संबंध में, निम्नलिखित question पर मेरा उत्तर देखें, शायद यह वही समस्या है।

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

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