|
锁定老贴子 主题:Hibernate 动态Update的问题
精华帖 (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来说,只更新那些修改过的属性。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-24
我按照robbin的方法设置了,但是没有生效,hibernate还是把所有的属性全部set一遍。不知道其中有什么敲门,robbin能讲解一下嘛?
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-25
在进行update前先用session.lock()然后再session.uodate,就可以了
|
|
| 返回顶楼 | |
|
最后更新时间:2005-02-21
downpour 写道 我按照robbin的方法设置了,但是没有生效,hibernate还是把所有的属性全部set一遍。不知道其中有什么敲门,robbin能讲解一下嘛?
我也没有成功,不知道有什么地方还需要设置 |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-21
只要load和save(update)操作处于同一session内,就可以动态update;不过,到底动态和静态哪个效率更好,不太清楚
|
|
| 返回顶楼 | |
|
最后更新时间:2005-02-21
引用 只要load和save(update)操作处于同一session内,就可以动态update;不过,到底动态和静态哪个效率更好,不太清楚 真是这样嘛?如果这样的话,我怎么感觉这个动态update意义不是很大。按照我一般的做法,总是将一个对象先load出来,然后交给前台,前台进行操作,再进行update,总是跨session的操作,难道update不是这样的嘛? |
|
| 返回顶楼 | |
|
最后更新时间: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(). 咯. |
|
| 返回顶楼 | |
|
最后更新时间:2005-03-02
我按找ROBBIN的配置好象一点问题都没有可以
|
|
| 返回顶楼 | |
|
最后更新时间: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设定,但执行后出错,不能执行 |
|
| 返回顶楼 | |
|
最后更新时间:2005-03-15
这个设置只对在一个session中的有状态的PO起作用
|
|
| 返回顶楼 | |










