Hibernate的事务管理

一. Hibernate中指定隔离级别

1. 配置 文件

<!-- 指定Hibernate操作数据库时的隔离级别 
		## specify a JDBC isolation level
		#hibernate.connection.isolation 1,2,48
		0001   1  读未提交
		0010   2  读已提交
		0100   4  可重复读
		1000   8  串行化
		-->
		<property name = "hibernate.connection.isolation">4</property>

二. 在项目中如何管理事务

1. 业务开始之前打开事务,业务结束之后关闭事务,业务执行过程中出现异常,回滚事务。

2. 在Hibernate中,确保使用同一个 session对象,开发人员需要调用sf.getCurrentSession()方法即可获得与 当前线程绑定的Session对象。

3. 调用getCurrentSession方法必须有一段主配置

<!-- 指定session与当前线程绑定 -->
		<property name="hibernate.current_session_context_class">thread</property>

注意:通过getCurrentSession方法获得的session对象在 事务提交时会自动关闭,不用我们手动关闭,如果手动关闭了,会抛出异常。

 

三. 客户管理系统中的改造

1. 改造service层

public class CustomerServiceImpl implements CustomerService {

	private CustomerDao customerDao = new CustomerDaoImpl();
	
	public void save(Customer c) {
		// TODO Auto-generated method stub
		//调用Dao保存客户
		Session session = HibernateUtils.getCurrentSession();
		//打开事务
		Transaction tx = session.beginTransaction();
		
		//调用dao保存客户
		try{
		customerDao.save(c);
		}catch(Exception e){
			e.printStackTrace();
			tx.rollback();
		}
		
		tx.commit();
	}

}

2. 改造Dao层

public class CustomerDaoImpl implements CustomerDao {

	public void save(Customer c) {
		// TODO Auto-generated method stub
		//1. 获得Session
		Session session = HibernateUtils.getCurrentSession();
		
		//2. 执行保存
		session.save(c);
		
	}

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值