hibernate_day02——事务及其规范写法

  • hibernate事务操作
  • 事务相关概念

(1)什么是事务:在数据库操作中,一项事务(Transaction) 是由一条或多条操作数据库的SQL语句组成的一个不可分割的工作单元。当事务中的所有操作都正常完成时,整个事务才能被提交到数据库中,如果有一项操作没有完成,则整个事务会被回滚。其实事务总结起来理解为:逻辑上的一组操作,组成这组操作的各个单元,要么一起成功,要么一起失败。

(2)事务的特性:四个特性:原子性、一致性、隔离性、持久性

(3)不考虑隔离性产生问题:脏读、不可重复读、虚读

(4)设置事务隔离级别

——mysql默认隔离级别:repeatable_read

  • hibernate事务代码规范写法

(1)代码结构

try {   开启事务; 提交事务; 

}catch() {  回滚事务

}finally{ 关闭

}

// 事务规范代码
	@Test
	public void testTx() {
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		try {
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			// 开启事务
			tx = session.beginTransaction();
			// 添加
			User user = new User();
			user.setUid(7);
			user.setUsername("daf");
			user.setPassword("123");
			user.setAddress("XXX");
			// 保存
			session.save(user);
			// 搞个异常
			int i = 10 / 0;
			// 提交事务
			tx.commit();
		} catch (Exception e) {
			// 回滚事务
			tx.rollback();
		} finally {
			// 关闭操作
			session.close();
			sessionFactory.close();
		}
	}
  • hibernate绑定session

session是单线程,在开发中,项目的是很多人一起要操作的,让session与本地线程绑定,那么session就是唯一的对象。

(1)session类似于jdbc的connection,之前web阶段学过threadLocal

(2)帮实现与本地线程绑定的session

(3)获取与本地线程绑定的session

——在hibernate核心配置文件中配置

——调用sessionFactory里面的方法得到

——获取与本地线程绑定的session的时候,关闭session报错,不需要我们再手动关闭了。

待续。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值