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

本文介绍如何使用Hibernate配置C3P0连接池,并将Session对象绑定到当前线程,实现自动关闭Session。通过具体步骤与示例代码,验证配置的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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连接池是否配置成功
	 */
	@Test
	public void test1(){
		Session s = HibernateUtil.openSession();
		s.doWork(new Work() {	
			@Override
			public void execute(Connection connection) throws SQLException {
				System.out.println(connection);
			}
		});
	}
	
	/**
	 * 验证绑定线程是否成功
	 * 
	 * 细节:
	 * 	当我们把Session对象绑定到当前线程之后,就不用关闭了,hibernate就会给我们关了。
	 */
	@Test
	public void test2(){
		Session s1 = HibernateUtil.getCurrentSession();
		Session s2 = HibernateUtil.getCurrentSession();
		
		System.out.println(s1 == s2);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值