论坛首页 Java版 Hibernate

Hibernate 动态Update的问题

浏览 16895 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2003-09-16
有人提出Hibernate在 update持久对象的时候,产生的sql语句是把所有的属性统统set一遍,这样会造成update操作效率很低。Hibernate默认情况下总是在初始化的时候静态生成sql语句,因此不能动态update。但是Hibernate也可以配置为动态产生update和insert语句。


[code:1]<class
        name="ClassName"                             
        table="tableName"
        dynamic-update="true|false"                  
        dynamic-insert="true|false"
/>[/code:1]



当设为true的时候,Hibernate在运行期动态产生sql语句,对于insert来说,只插入那些不是null的属性,这样就可以支持数据库字段的default属性;对于update来说,只更新那些修改过的属性。
   
最后更新时间:2004-12-24
我按照robbin的方法设置了,但是没有生效,hibernate还是把所有的属性全部set一遍。不知道其中有什么敲门,robbin能讲解一下嘛?
   
0 请登录后投票
最后更新时间:2004-12-25
在进行update前先用session.lock()然后再session.uodate,就可以了
   
0 请登录后投票
最后更新时间:2005-02-21
downpour 写道
我按照robbin的方法设置了,但是没有生效,hibernate还是把所有的属性全部set一遍。不知道其中有什么敲门,robbin能讲解一下嘛?


我也没有成功,不知道有什么地方还需要设置
   
0 请登录后投票
最后更新时间:2005-02-21
只要load和save(update)操作处于同一session内,就可以动态update;不过,到底动态和静态哪个效率更好,不太清楚
   
0 请登录后投票
最后更新时间:2005-02-21
引用

只要load和save(update)操作处于同一session内,就可以动态update;不过,到底动态和静态哪个效率更好,不太清楚


真是这样嘛?如果这样的话,我怎么感觉这个动态update意义不是很大。按照我一般的做法,总是将一个对象先load出来,然后交给前台,前台进行操作,再进行update,总是跨session的操作,难道update不是这样的嘛?
   
0 请登录后投票
最后更新时间:2005-02-22
引用
我怎么感觉这个动态update意义不是很大。按照我一般的做法,总是将一个对象先load出来,然后交给前台,前台进行操作

Object a = session.load();
a.setXXX
a.setXXXX
session.save().
或者是
Object a = new Object();
a.setXXx()
a.setXXX()
session.lock(a)
session.save().
咯.
   
0 请登录后投票
最后更新时间:2005-03-02
我按找ROBBIN的配置好象一点问题都没有可以
   
0 请登录后投票
最后更新时间:2005-03-04
nihongye 写道
引用
我怎么感觉这个动态update意义不是很大。按照我一般的做法,总是将一个对象先load出来,然后交给前台,前台进行操作

Object a = session.load();
a.setXXX
a.setXXXX
session.save().
或者是
Object a = new Object();
a.setXXx()
a.setXXX()
session.lock(a)
session.save().
咯.



只要在hbm里设置dynamic-insert="true",就能实现动态插入的效果。
但动态update总是试不好

session.lock(a)  //没有这个方法的,lock里少了个参数,update时设为update设定,但执行后出错,不能执行
   
0 请登录后投票
最后更新时间:2005-03-15
这个设置只对在一个session中的有状态的PO起作用
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐