Hibernate基础知识整理(四)

事务的边界

打开事务 Transcation tx =  session.beginTransaction();

提交事务 tx.commit();

回滚事务 tx.rollback();

hibernate的事务是通过调用JDBC来直接实现的,默认hibernate事务是不打开的。

通常事务的边界控制是放在service层,但是事务的处理应该是放在dao层的,这样的话数据访问层和业务逻辑层就会耦合在一起。为了让他们不耦合,需要借助EJB或者spring框架来,让业务逻辑层不出现数据访问层的代码,同时又保证业务逻辑是放在一个事务中执行的。

openSessionInView模式:
我们知道sessionFactory有一个方法:getCurrentSession():就是获取当前线程内的session。这个方法默认hibernate是无法使用的。
需要在配置文件中进行配置current_session_context_class属性:

1.单服务器其值为thread:ThreadLocal来管理Session实现多个操作共享一个session,避免反复获取session实现多个操作共享一个session,并控制事务边界,此时session不能调用close,当commit或rollback的时候session会自动关闭。
2.多态服务器的时候配置其值为jta:由jta事务管理器来管理事务
threadLocal是一个容器,类似于map容器,键使用当前线程。
open session in view:
优势:在渲染页面的额时候,保持页面打开。可以简单处理事务边界问题和懒加载session被关闭问题。
劣势:扩大了session和transaction的生命周期,导致系统的并发处理能力下降了。

 

转载于:https://www.cnblogs.com/xiaoweigangwan/p/7824918.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值