@Transactional spring JPA .save() 没有必要吗?

Yan*_*naY 6 java spring jpa transactional-database

我明白如果我们使用注释@Transactional。“save()”方法不是必需的。准确吗?

就我的例子来说:

@Transactional
void methodA() {
   ...
   ObjectEntity objectEntity = objectRepository.find(); 
   methodB(objectEntity);
}

void methodB(ObjectEntity obj) {
   ...
   obj.setName("toto");
   objectRepository.save(obj);    <-- is it necessary?
}
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助

Ins*_*dge 11

它的工作原理如下:

  • save()将实体附加到会话,并且在事务结束时,只要没有异常,它就会全部保存到数据库中。

  • 现在,如果您从数据库获取对象(例如ObjectEntity objectEntity = objectRepository.find();),那么该对象已经附加,您不需要调用 save() 方法

  • 然而,如果对象是分离的(例如ObjectEntity objectEntity = new ObjectEntity();),那么您必须使用 save() 方法将其附加到会话,以便对其所做的更改持久保存到数据库中。