2017-01-30 83 views
-1

我是Hibernate的新手,我还是不明白它是如何工作的对象import org.hibernate.Transaction;。 现在我写CRUD操作的Person实体,我写了这个实施,立足于我在网络上找到:休眠 - 把操作放在事务

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

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

回答

0

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

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

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

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