Hibernate 5中如何手动配置事务?
时间: 2024-10-11 12:14:31 浏览: 30
java+hibernate双数据源配置
在Hibernate 5中,如果你想手动配置事务,而不是依赖于Spring自动管理,你可以这样做:
1. **Session实例化**: 创建`Session`时,可以传入一个实现了`org.hibernate.engine.transaction.spi.TransactionProvider`接口的交易提供者。例如:
```java
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(serviceProperties)
.build();
SessionFactory sessionFactory = new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(MyEntity.class)
.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession(new TransactionConfiguration());
```
2. **开启事务**: 使用`Session`的`begin()`方法手动开始一个事务:
```java
try {
session.beginTransaction();
// 执行业务逻辑
} catch (HibernateException he) {
session.getTransaction().rollback(); // 如果发生错误,回滚事务
} finally {
session.getTransaction().finish(); // 提交或关闭事务,即使在catch块中也应调用
session.close();
}
```
3. **清理资源**: 确保在每次操作完成后正确关闭事务,并清理`SessionFactory`和`Session`。
记得在应用程序结束时关闭注册器以释放资源:
```java
serviceRegistry.close();
```
阅读全文