Mysql 连接池session_Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
Hibernate連接池
Hibernate自帶了連接池,但是呢,該連接池比較簡單..而Hibernate又對C3P0這個連接池支持…因此我們來更換Hibernate連接池為C3P0
查看Hibernate自帶的連接池
我們可以通過Hibernate.properties文件中查看Hibernate默認配置的連接池
hibernate.properties的配置文件可以在\project\etc找到
Hibernate的自帶連接池啥都沒有,就一個連接數(shù)量為1…
查看Hibernate對C3P0的支持
#hibernate.c3p0.max_size 2 最大連接數(shù)
#hibernate.c3p0.min_size 2 最小連接數(shù)
#hibernate.c3p0.timeout 5000 超時時間
#hibernate.c3p0.max_statements 100 最大執(zhí)行的命令的個數(shù)
#hibernate.c3p0.idle_test_period 3000 空閑測試時間
#hibernate.c3p0.acquire_increment 2 連接不夠用的時候, 每次增加的連接數(shù)
#hibernate.c3p0.validate false
修改Hibernate連接池
我們在hibernate.cfg.xml中配置C3p0,讓C30P0作為Hibernate的數(shù)據(jù)庫連接池
查找Hibernate支持的連接池組件有什么:
既然找到了,那么我們在hibernate.cfg.xml中配置對應的類就和相關配置就行了
org.hibernate.connection.C3P0ConnectionProvider
2
4
5000
10
30000
2
線程Session
我們創(chuàng)建Session的時候,有兩個方法
openSession()【每次都會創(chuàng)建新的Session】
getCurrentSession()【獲取當前線程的Session,如果沒有則創(chuàng)建】
一般地,我們使用線程Session比較多
如果要使用getCurrentSession(),需要在配置文件中配置:
thread
測試數(shù)據(jù)
@Test
public void testSession() throws Exception {
//openSession: 創(chuàng)建Session, 每次都會創(chuàng)建一個新的session
Session session1 = sf.openSession();
Session session2 = sf.openSession();
System.out.println(session1 == session2);
session1.close();
session2.close();
//getCurrentSession 創(chuàng)建或者獲取session
// 線程的方式創(chuàng)建session
// 一定要配置:thread
Session session3 = sf.getCurrentSession();// 創(chuàng)建session,綁定到線程
Session session4 = sf.getCurrentSession();// 從當前訪問線程獲取session
System.out.println(session3 == session4);
// 關閉 【以線程方式創(chuàng)建的session,可以不用關閉; 線程結束session自動關閉】
//session3.close();
//session4.close(); 報錯,因為同一個session已經(jīng)關閉了!
}
總結
以上是生活随笔為你收集整理的Mysql 连接池session_Hibernate第十一篇【配置C3P0数据库连接池、线程Session】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java oom dump_JVM 在遇
- 下一篇: mysql二进制安装的优缺点_MYSQL