Hibernate学习之---事务控制

本文介绍了Hibernate框架中的事务管理机制,包括事务的基本概念、Session与事务的关系、如何通过SessionFactory创建上下文相关的Session等内容。

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

事务是一步或几步基本操作组成的逻辑执行单元,这些基本操作作为一个整体执行单元,它们要么全部执行,要么全部取消执行,绝不能仅仅执行部分。
事务具备4个特性:原子性、一致性、隔离性和持续性。

1.Session与事务

Hibernate的事务(Transaction对象)通过Session的beginTransaction()方法显示打开,Hibernate自身并不提供事务控制行为。
从编程角度来看,Hibernate的事务由Session对象开启;从底层实现来看,Hibernate事务由TransactionFactory的实例来产生。
TransactionFactory是一个事务工厂的接口,Hibernate为不同的事务环境提供了不同的实现类。
应用程序编程后无须手动操作TransactionFactory产生事务,这是因为SessionFactory底层已经封装了TransactionFactory。
Hibernate建议采用每个请求对应一次Session的模式—因为一次请求通常表示需要执行一个完整的业务功能,这个功能由一系列数据库原子操作组成,而且它们应该是一个逻辑上的整体。

3.上下文相关的Session

HibernateUtil工具类,该工具类可以保证将线程不安全的Session绑定限制在当前线程内—也就是实现一种”上下文相关”的Session。
SessionFactory.getCurrentSession()方法,该方法可直接获取”上下文相关”的Session。

Hibernate此处管理上下文相关的Session的方式就是典型的策略模式。
如果使用TreadLocalSessionContext策略,Hibernate的Session会随着getCurrentSession()方法自动打开,并随着事务提交自动关闭。对于在容器中使用Hibernate的场景,通常会采用JTASessionContext策略;对于独立的Hibernate应用而言,通常会采用ThreadLocalSessionContext策略。

    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.current_session_context_class">jta<property>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值