Java Hibernate-将操作置于事务下

Java Hibernate-将操作置于事务下,java,hibernate,transactions,crud,Java,Hibernate,Transactions,Crud,我是Hibernate新手,我仍然不明白它是如何工作的对象import org.Hibernate.Transaction。 现在我正在为一个人实体编写CRUD操作,我根据在web上找到的内容编写了这个实现: public void save(Person p) { Session session = this.sessionFactory.openSession(); Transaction tx = session.beginTransaction(); sessio

我是Hibernate新手,我仍然不明白它是如何工作的对象
import org.Hibernate.Transaction。
现在我正在为一个
实体编写CRUD操作,我根据在web上找到的内容编写了这个实现:

public void save(Person p) {
    Session session = this.sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    session.persist(p);
    tx.commit();
    session.close();
}
我的问题是,为什么我应该使用事务对象?如果我不使用它会发生什么?最后,在每个CRUD操作中都需要使用什么?我注意到,在读操作中(因此当我们不在数据库中写入并且只得到请求的Person对象列表时),开发人员不会将代码置于事务下。

为什么我应该使用事务对象

在数据库管理系统中,事务代表一个工作单元,每个工作单元都需要独立于其他工作单元,以便在发生任何类型的故障时,系统都可以恢复,并且已经存在的数据不会丢失。 事务对象有助于实现这一点。只有在提交事务时数据才会持久化,以防在提交之前出现任何失败。所有更改都将回滚

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

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