Hibernate - 在Transaction下放置操作

时间:2017-01-30 09:05:33

标签: java hibernate transactions crud

我是Hibernate的新手,我仍然不了解Object import org.hibernate.Transaction;是如何工作的。 现在我正在为Person实体编写CRUD操作,我根据我在网上找到的内容编写了这个实现:

public void save(Person p) {
    Session session = this.sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    session.persist(p);
    tx.commit();
    session.close();
}

我的问题是,为什么我应该使用Transaction对象?如果我不使用它会发生什么?最后,是否需要在每个CRUD操作中使用?我注意到在读取操作中(所以当我们不在DB中写入并且我们只获得Person对象列表时)开发人员不会将代码置于事务中。

1 个答案:

答案 0 :(得分:0)

为什么我应该使用Transaction对象?

在数据库管理系统中,事务代表工作单元,并且每个事务都需要独立于其他事务,因此,如果出现任何类型的故障,系统可以恢复并且现有数据不会丢失。 事务对象可以帮助您实现此目的。只有在提交事务时,如果在提交之前发生任何故障,则会保留数据,所有更改都将被回滚。

我应该在每次crud操作中使用它吗?

通常,对于读取操作,您不需要事务对象,但它又有争议,请参阅this以获取有关只读操作中事务的更多信息。但是对于创建,更新和删除操作,您应该始终使用事务。