Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
生活随笔
收集整理的這篇文章主要介紹了
Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hibernate連接池
Hibernate自帶了連接池,但是呢,該連接池比較簡單..而Hibernate又對C3P0這個連接池支持…因此我們來更換Hibernate連接池為C3P0
查看Hibernate自帶的連接池
我們可以通過Hibernate.properties文件中查看Hibernate默認配置的連接池
hibernate.properties的配置文件可以在\project\etc找到
Hibernate的自帶連接池啥都沒有,就一個連接數量為1…
查看Hibernate對C3P0的支持
- #hibernate.c3p0.max_size 2 最大連接數
- #hibernate.c3p0.min_size 2 最小連接數
- #hibernate.c3p0.timeout 5000 超時時間
- #hibernate.c3p0.max_statements 100 最大執行的命令的個數
- #hibernate.c3p0.idle_test_period 3000 空閑測試時間
- #hibernate.c3p0.acquire_increment 2 連接不夠用的時候, 每次增加的連接數
- #hibernate.c3p0.validate false
修改Hibernate連接池
我們在hibernate.cfg.xml中配置C3p0,讓C30P0作為Hibernate的數據庫連接池
查找Hibernate支持的連接池組件有什么:
既然找到了,那么我們在hibernate.cfg.xml中配置對應的類就和相關配置就行了
<!-- 【連接池配置】 --><!-- 配置連接驅動管理類 --><property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property><!-- 配置連接池參數信息 --><property name="hibernate.c3p0.min_size">2</property><property name="hibernate.c3p0.max_size">4</property><property name="hibernate.c3p0.timeout">5000</property><property name="hibernate.c3p0.max_statements">10</property><property name="hibernate.c3p0.idle_test_period">30000</property><property name="hibernate.c3p0.acquire_increment">2</property>線程Session
我們創建Session的時候,有兩個方法
- openSession()【每次都會創建新的Session】
- getCurrentSession()【獲取當前線程的Session,如果沒有則創建】
一般地,我們使用線程Session比較多
如果要使用getCurrentSession(),需要在配置文件中配置:
<!--配置線程Session--><property name="hibernate.current_session_context_class">thread</property>測試數據
@Testpublic void testSession() throws Exception {//openSession: 創建Session, 每次都會創建一個新的sessionSession session1 = sf.openSession();Session session2 = sf.openSession();System.out.println(session1 == session2);session1.close();session2.close();//getCurrentSession 創建或者獲取session// 線程的方式創建session // 一定要配置:<property name="hibernate.current_session_context_class">thread</property>Session session3 = sf.getCurrentSession();// 創建session,綁定到線程Session session4 = sf.getCurrentSession();// 從當前訪問線程獲取sessionSystem.out.println(session3 == session4);// 關閉 【以線程方式創建的session,可以不用關閉; 線程結束session自動關閉】//session3.close();//session4.close(); 報錯,因為同一個session已經關閉了!}轉載于:https://www.cnblogs.com/zhong-fucheng/p/7202959.html
總結
以上是生活随笔為你收集整理的Hibernate第十一篇【配置C3P0数据库连接池、线程Session】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 赛码网算法: 军训队列( python实
- 下一篇: tools URL 收集