簡體   English   中英

在 hibernate / spring-jpa 中不調用 save() 來更新實體/行是一個好還是壞的約定?

[英]Is it a good or bad convention to update entity / row without calling save() in hibernate / spring-jpa?

最近我發現如果在@Transactional塊中,沒有必要調用repository.save() Hibernate / Spring-JPA 將在退出事務時自動更新行。 例如

@Transactional
public updateName(Long id, String name) {
    User user = repository.findOneById(id);
    user.setName(name);
    // repository.save(user); // <- looks not necessary?
}

這是一個好的或壞的約定? 恐怕有時@Transactional在某些特殊情況下不起作用。

有時如果沒有調用其他更新方法,Hibernate 上下文將不會執行保存操作。 調用 save 方法總是更好。

為什么你認為@Transactional不會“工作”? 您正在利用該實體在 JPA 術語中是“托管”的事實,所以這完全沒問題。 事實上,使用save甚至可能導致不必要的操作,因為 Hibernate 必須同步持久化上下文。 如果您在事務中有其他操作,一次執行所有操作可能更有效,所以我不建議調用 save 除非您真的希望 state 同步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM