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

Java Spring在使用find访问对象时应该启动事务吗?,java,spring,transactions,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); } 您是否也应该为仅执行查找时调用的方法启动事务处理?否这不是必需的。仅在保存时,您需要使用@Transactional 如果在方法中发生任何异常时使用此方法

我有几种方法

@persistanceContext
EntityManager em;

public Car getCar(int id) {

   em.find(Car.class, id)

}

@Trasnactional

public void saveCar(Car car) {

   em.save(car);
}

您是否也应该为仅执行查找时调用的方法启动事务处理?

否这不是必需的。仅在保存时,您需要使用@Transactional

如果在方法中发生任何异常时使用此方法,则将回滚所有以前的操作(即插入、删除)


它将基于
做任何事或不做任何事的原则工作

在获取数据时最好使用
只读
事务。它将防止数据在读取时保持一致,并且只读取已提交的数据

同样,它的最佳实践是,也可以在没有
事务的情况下使用