问题是CrudRepository and Hibernate: save(List<S>) vs save(Entity) in transaction之后的问题。
如果我没有在下面用@Transactional标记以下内容。如果数据库连接断开或由于Spring Data JPA正在保存列表而发生某种情况。列表会回滚还是部分保存?
@Transactional
public void processData() {
List<MyEntity> entities = ....;
MyEntityRepository.save(entities);
}
答案 0 :(得分:2)
<a href="/url?sa=t&rct=j&q=&esrc=s&source=web&cd=9&cad=rja&uact=8&ved=2ahUKEwjltNj8w9ngAhVNip4KHQdJDdQQFjAIegQIDBAB&url=https%3A%2F%2Fwww.merriam-webster.com%2Fdictionary%2Fcookie-cutter&usg=AOvVaw3PbUvVz6q2bSTgondh9KCq" onmousedown="return rwt(this,'','','','9','AOvVaw3PbUvVz6q2bSTgondh9KCq','','2ahUKEwjltNj8w9ngAhVNip4KHQdJDdQQFjAIegQIDBAB','','',event)" data-cthref="/url?sa=t&rct=j&q=&esrc=s&source=web&cd=9&cad=rja&uact=8&ved=2ahUKEwjltNj8w9ngAhVNip4KHQdJDdQQFjAIegQIDBAB&url=https%3A%2F%2Fwww.merriam-webster.com%2Fdictionary%2Fcookie-cutter&usg=AOvVaw3PbUvVz6q2bSTgondh9KCq">
<h3 class="LC20lb">Cookie-cutter | Definition of Cookie-cutter by Merriam-Webster</h3>
<br>
<div class="TbwUpd"><cite class="iUh30">https://www.merriam-webster.com/dictionary/cookie-cutter</cite></div>
</a>
提供的方法已经可以交易。
根本不需要这样做,只需看一下this的实现即可。所有方法CrudRepository
,deleteAll delete
saveAll ,
@ Transactional`。这意味着默认实现已经考虑了它。
实际上,在没有are annotated with
注释的任何地方,都使用默认的@Transactional
,即在类级别。
答案 1 :(得分:1)
这在很大程度上取决于MyEntityRepository
的实现。
例如如果它是由spring作为SimpleJpaRepository生成的,则将其回滚。因为如链接的问题所示,save()
方法也用@Transactional
注释:
@Transactional
public <S extends T> List<S> save(Iterable<S> entities) {}
但是对于其他所有实现?我会说行为是不确定的