论坛首页 Java企业应用论坛

Hibernate HQL 更新POJO部分字段

浏览 5086 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-11  
项目中使用SSH2框架,使用Hibernate时,经常遇到一些只需更新部分字段的情况,Hibernate更新时,是将数据先加载到Hibernate中,然后更新类的属性,然后再保存(持久化到数据库中),但是有时候,由于数据比较大,比如某条数据中包含着二进制数据,光从数据库中加载到Hibernate中中就需要好长时间,然后再修改,保存,特别浪费时间和资源,但是又不需要修改二进制数据,仅仅修改下一些varchar的字段。
可以采用这样的HQL语句:
String hql = "update TblName t set t.fldName = 'zhangsan' where t.fldId = ?";


这样,就可以只修改部分字段,而且不需要加载整条数据。

我自己这样做的,如果有更好的方法,欢迎拍砖。
   发表时间:2011-10-11  
学习,顺便问下楼主应该用二级缓存吧
0 请登录后投票
   发表时间:2011-10-20  
4)<property>元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false
      5)<property>元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
0 请登录后投票
   发表时间:2011-10-21  
这种做法会造成二级缓存被完全清空,而且需要显示操作更新。而缺省的情况下受管Bean会自动更新。
0 请登录后投票
   发表时间:2011-10-25  
楼主
String hql = "update TblName t set t.fldName = 'zhangsan' where t.fldId = ?";
貌似不是HQL语句啊?只是sql语句。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics