Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
2018-01-21 00:00
302 查看
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>
测试数据
@Test public void testSession() throws Exception { //openSession: 创建Session, 每次都会创建一个新的session Session 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();// 从当前访问线程获取session System.out.println(session3 == session4); // 关闭 【以线程方式创建的session,可以不用关闭; 线程结束session自动关闭】 //session3.close(); //session4.close(); 报错,因为同一个session已经关闭了! }
相关文章推荐
- Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
- Hibernate配置c3p0数据库连接池步骤
- [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等
- Spring+Hibernate用 c3p0配置数据库连接池
- DBCP,C3P0,Proxool,BoneCP详细参数介绍 以及 Hibernate配置数据库连接池的三种方式介绍
- Hibernate -- 配置c3p0连接池, 事务隔离级别, 管理session
- Hibernate 5.x 配置 C3P0 数据库连接池
- Hibernate -- 配置c3p0连接池, 事务隔离级别, 管理session
- 数据库连接池概念、种类、配置(三)(Spring\Hibernate\Tomcat配置数据库连接)
- 【转】数据库连接池优化配置(druid,dbcp,c3p0)
- Spring配置c3p0、dbcp数据库连接池
- 在web.xm里配置了OpenSessionInViewFilter引起Hibernate session问题
- hibernate配置C3P0
- 数据库连接池DBCP 、c3p0配置参数说明
- hibernate中是否存在多个线程同时访问同一个Session?
- 数据库连接池优化配置(druid,dbcp,c3p0)
- Hibernate SessionFactory配置实例
- Hibernate配置文件报错:The content of element type "session-factory" must match "(property*,mapping*,(c
- [Hibernate]hibernate4不使用hibernate3的AnnotationSessionFactoryBean配置sessionFactory
- Hibernate配置文件current_session_context_class的意思