欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hibernate 的事务传播容易出现的问题

程序员文章站 2022-07-11 17:39:06
...

 hibernate 的事务传播容易出现的问题

先说下我们遇到的问题:

(1)get出来一个对象,修改其成员变量,

结果触发了自动更新(向数据库发送一条update指令),

其实根本没有调用update 方法

(2)对于持久态的对象,显示调用update,结果没有更新

 

第一个问题解决方法:

(a)把事务设置为只读


hibernate 的事务传播容易出现的问题
            
    
    博客分类: hibernate数据库 事务传播hibernate事务管理 
 

第二个问题的解决 方法:

把修改的dao方法的事务传播类型改为: REQUIRES_NEW

 


hibernate 的事务传播容易出现的问题
            
    
    博客分类: hibernate数据库 事务传播hibernate事务管理 
getXXX就算使用REQUIRES_NEW 也没有用. 
hibernate 的事务传播容易出现的问题
            
    
    博客分类: hibernate数据库 事务传播hibernate事务管理 

updateXXX就算使用REQUIRES_NEW 也没有用.

 
hibernate 的事务传播容易出现的问题
            
    
    博客分类: hibernate数据库 事务传播hibernate事务管理 
 

最佳实践

(1)对于只读的逻辑,比如查询数据用于前端展现,则建议使用只读事务;

(2)接口的职责要单一,要么仅查询,展现,要么修改.

不要出现一个dao方法中既有查询又有修改的

(3)所有的update逻辑一定要放在事务中,一定要被事务管理,

否则导致没有更新数据库

(4)推荐实体类的关联关系尽量使用懒加载,lazy,即

@ManyToMany(fetch = FetchType.LAZY)

 

推荐阅读:

https://juejin.im/post/5aa148126fb9a028d4442a46

https://blog.csdn.net/VipMao/article/details/51517658

https://www.cnblogs.com/leotsai/p/hibernate-transaction-session-flush-commit-rollback.html

  • hibernate 的事务传播容易出现的问题
            
    
    博客分类: hibernate数据库 事务传播hibernate事务管理 
  • 大小: 56.6 KB
  • hibernate 的事务传播容易出现的问题
            
    
    博客分类: hibernate数据库 事务传播hibernate事务管理 
  • 大小: 57.8 KB
  • hibernate 的事务传播容易出现的问题
            
    
    博客分类: hibernate数据库 事务传播hibernate事务管理 
  • 大小: 68.9 KB
  • hibernate 的事务传播容易出现的问题
            
    
    博客分类: hibernate数据库 事务传播hibernate事务管理 
  • 大小: 356.9 KB