【Hibernate事务管理示例】事务只是代表一个工作单元。在这种情况下, 如果一个步骤失败, 则整个事务都会失败(这称为原子性)。事务可以通过ACID属性(原子性, 一致性, 隔离性和持久性)来描述。
文章图片
Hibernate中的事务接口
在Hibernate框架中, 我们具有用于定义工作单元的Transaction接口。它保持对事务实现(JTA, JDBC)的抽象。
事务与Session关联, 并通过调用session.beginTransaction()实例化。
事务接口的方法如下:
- void begin()启动一个新事务。
- 除非我们处于FlushMode.NEVER, 否则void commit()会终止工作单元。
- void rollback()强制此事务回滚。
- void setTimeout(int seconds)它为由后续调用开始在此实例上开始的任何事务设置事务超时。
- boolean isAlive()检查事务是否仍然存在。
- void registerSynchronization(Synchronization s)为此事务注册用户同步回调。
- boolean wasCommited()检查事务是否成功提交。
- boolean wasRolledBack()检查事务是否成功回滚。
在Hibernate状态下, 最好在发生任何异常时回滚事务, 以便资源可以释放。让我们看一下Hibernate中的事务管理示例。
Session session = null;
Transaction tx = null;
try {
session = sessionFactory.openSession();
tx = session.beginTransaction();
//some actiontx.commit();
}catch (Exception ex) {
ex.printStackTrace();
tx.rollback();
}
finally {session.close();
}
推荐阅读
- Hibernate查询语言(HQL)
- 使用注解的每个子类的表
- 使用注解的实体表类
- Hibernate二级缓存
- 使用XML的Hibernate一对一示例
- 使用注解Hibernate一对一示例
- 使用注解Hibernate一对多示例
- 使用XML的Hibernate一对多示例
- Hibernate命名查询