Abd*_*SSI 5 hibernate jpa transactions spring-data-jpa spring-boot
此链接: https: //www.quora.com/When-should-Spring-Boot-methods-use-the-Transactional-annotation
解释清楚@Transactional是做什么的,但我还是不明白Spring Boot方法什么时候应该使用这个注解:
例如:
我有这个方法:
void addPerson () {// code that calls the DAO layer}
Run Code Online (Sandbox Code Playgroud)
我的方法在没有@Transactional注释的情况下也能正常工作,那么为什么我应该添加这个注释。
更准确地说(在 Spring Boot 中)有什么区别:
@Transactional void addPerson () {// code that calls the DAO layer}
Run Code Online (Sandbox Code Playgroud)
和
void addPerson () {// code that calls the DAO layer}
Run Code Online (Sandbox Code Playgroud)
或者Spring boot会自动添加这个注释,这样我们就不需要将它添加到我们的服务中
Fer*_*ado 11
@Transcational当 API 上的并发调用可能相互影响时使用。
假设您要添加一个人(您从某处检索数据,从数据创建一个新人并将其添加到人员列表中)。假设为了创建一个 Person,您需要一个partner属性,该属性是另一个 Person。
在创建人员之前,您可以通过 Id somehwere 搜索合作伙伴并将其添加到新的人员partner属性中。但是,如果在所有这些查询期间partner您想要添加的内容在某处被删除(假设由于其他一些查询而在数据库中),该怎么办?您最终将得不到您所请求的对象。
如果您使用@TransactionalSpring,请确保所有必需的数据在事务结束之前都是安全的。一旦结束,partner就会发生来自 的删除请求,然后您将有一些逻辑将其从新的Person对象中删除。但这是之后才会发生的事情。
您用于@Transactional确保“交易”的安全。
| 归档时间: |
|
| 查看次数: |
8146 次 |
| 最近记录: |