在事务第二部分中的Save(List <s>)与save(Entity)

时间:2019-02-26 14:32:59

标签: java spring hibernate spring-data-jpa

问题是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);
}

2 个答案:

答案 0 :(得分:2)

<a href="/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=9&amp;cad=rja&amp;uact=8&amp;ved=2ahUKEwjltNj8w9ngAhVNip4KHQdJDdQQFjAIegQIDBAB&amp;url=https%3A%2F%2Fwww.merriam-webster.com%2Fdictionary%2Fcookie-cutter&amp;usg=AOvVaw3PbUvVz6q2bSTgondh9KCq" onmousedown="return rwt(this,'','','','9','AOvVaw3PbUvVz6q2bSTgondh9KCq','','2ahUKEwjltNj8w9ngAhVNip4KHQdJDdQQFjAIegQIDBAB','','',event)" data-cthref="/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=9&amp;cad=rja&amp;uact=8&amp;ved=2ahUKEwjltNj8w9ngAhVNip4KHQdJDdQQFjAIegQIDBAB&amp;url=https%3A%2F%2Fwww.merriam-webster.com%2Fdictionary%2Fcookie-cutter&amp;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) {}

但是对于其他所有实现?我会说行为是不确定的