Spring是否应该在使用find访问对象时启动事务?

时间:2013-03-06 14:58:25

标签: java spring transactions

我有几个方法

@persistanceContext
EntityManager em;

public Car getCar(int id) {

   em.find(Car.class, id)

}

@Trasnactional

public void saveCar(Car car) {

   em.save(car);
}

您是否还要为刚刚执行查找时调用的方法启动事务?

2 个答案:

答案 0 :(得分:2)

最好在获取数据时使用Read-Only事务。它将在读取时防止数据不一致,只读取已提交的数据。

再次提出最佳做法,也可以在没有Transaction的情况下使用。

答案 1 :(得分:0)

不,没有必要。只有保存才需要使用@Transactional。

如果您使用此方法,如果方法中发生任何异常,这将回滚所有previoes操作(即insertinsa,删除)

它将基于do every thing or nothing principle

工作