Session,SessionFactory,Connetion等
Posted on 2008-03-11 22:43 leekiang 閱讀(555) 評論(0) 編輯 收藏 所屬分類: hibernate1,有時連續(xù)調(diào)多個Dao方法時會報連接關(guān)閉,原因往往是關(guān)閉session不當(dāng)。
? 不要用session.close(),這樣會使同一個線程的下一個Dao方法里執(zhí)行
? HibernateSessionFactory.getSession()時取到的是已經(jīng)被關(guān)閉的session,當(dāng)然會報錯了。
2,Connection conn =session.connection();
? 這個conn一定要執(zhí)行conn.close()嗎?
3,
http://hi.baidu.com/sodarfish/blog/item/b996a3df9224d217622798ec.html
在通常的情況下使用DriverManager.getConnection()得到的是一個Connection的實例,當(dāng)你調(diào)用它的close()方 法時會關(guān)閉StateMent和ResultSet。但是我們在使用連接池的過程中,通過連接池得到Connection,當(dāng)我們調(diào)用 Connection的close()時,Connection并不是被關(guān)閉了,而是回到了連接池中,它以后還會被其他的代碼取出來使用,如果我們沒有關(guān) 閉stmt和rs的話,只會使系統(tǒng)中的stmt和rs越來越多。所以在使用連接池后,調(diào)用conn.close()前應(yīng)先將rs和stmt關(guān)閉。
至于為什么調(diào)用close()之后不是直接關(guān)閉此連接,而是返回給連接池,這是因為dbcp使用委派模型來實現(xiàn)Connection接口了。
http://nymph.blogdriver.com/nymph/180989.html#comment
http://www.javaeye.com/topic/9317?page=1
http://www.javaeye.com/topic/48048?page=1
Hibernate中的session 事務(wù)處理機(jī)制
?
? 不要用session.close(),這樣會使同一個線程的下一個Dao方法里執(zhí)行
? HibernateSessionFactory.getSession()時取到的是已經(jīng)被關(guān)閉的session,當(dāng)然會報錯了。
2,Connection conn =session.connection();
? 這個conn一定要執(zhí)行conn.close()嗎?
3,
http://hi.baidu.com/sodarfish/blog/item/b996a3df9224d217622798ec.html
在通常的情況下使用DriverManager.getConnection()得到的是一個Connection的實例,當(dāng)你調(diào)用它的close()方 法時會關(guān)閉StateMent和ResultSet。但是我們在使用連接池的過程中,通過連接池得到Connection,當(dāng)我們調(diào)用 Connection的close()時,Connection并不是被關(guān)閉了,而是回到了連接池中,它以后還會被其他的代碼取出來使用,如果我們沒有關(guān) 閉stmt和rs的話,只會使系統(tǒng)中的stmt和rs越來越多。所以在使用連接池后,調(diào)用conn.close()前應(yīng)先將rs和stmt關(guān)閉。
至于為什么調(diào)用close()之后不是直接關(guān)閉此連接,而是返回給連接池,這是因為dbcp使用委派模型來實現(xiàn)Connection接口了。
http://nymph.blogdriver.com/nymph/180989.html#comment
http://www.javaeye.com/topic/9317?page=1
http://www.javaeye.com/topic/48048?page=1
Hibernate中的session 事務(wù)處理機(jī)制
?