Hibernate学习笔记 -- day06 连接池及绑定本地线程

来源:互联网 发布:狼人杀 法官 软件 编辑:程序博客网 时间:2024/05/29 16:19

一、Hibernate配置连接池及session线程绑定

1、导入c3p0连接池jar包


2、在主配置文件中配置连接池提供商及线程绑定

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property><!-- 把session绑定到当前线程上 --><property name="hibernate.current_session_context_class">thread</property> 

3、HibernateUtil中编写获取本地线程的方法

注意:当我们把Session对象绑定到当前线程之后,就不用关闭了,hibernate就会给我们关了。

/** * 从当前线程上获取Session * @return */public static Session getCurrentSession(){return factory.getCurrentSession();}

4、测试连接池及绑定线程的代码

package cn.itcast.test;import java.sql.Connection;import java.sql.SQLException;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.jdbc.Work;import org.junit.Test;import cn.itcast.domain.Customer;import cn.itcast.utils.HibernateUtil;/** * hibernate的验证连接池和绑定线程 * */public class HibernateDemo3 {/** * 验证C3P0连接池是否配置成功 */@Testpublic void test1(){Session s = HibernateUtil.openSession();s.doWork(new Work() {@Overridepublic void execute(Connection connection) throws SQLException {System.out.println(connection);}});}/** * 验证绑定线程是否成功 *  * 细节: * 当我们把Session对象绑定到当前线程之后,就不用关闭了,hibernate就会给我们关了。 */@Testpublic void test2(){Session s1 = HibernateUtil.getCurrentSession();Session s2 = HibernateUtil.getCurrentSession();System.out.println(s1 == s2);}}