Hibernate 动态Update的问题

03-08-29 robbin
记得前面有个帖子讨论Hibernate的动态Update的问题。

有人提出Hibernate在update持久对象的时候,产生的sql语句是把所有的属性统统set一遍,这样会造成update操作效率很低。我一直也认为Hibernate总是在初始化的时候静态生成sql语句,因此不能动态update。刚刚发现Hibernate实际上可以动态产生update和insert语句。

<class
        name="ClassName"                              
        table="tableName" 
        dynamic-update="true|false"                   
        dynamic-insert="true|false" 
/>
<p>

当设为true的时候,Hibernate在运行期动态产生sql语句,对于insert来说,只插入那些不是null的属性,这样就可以支持数据库字段的default属性;对于update来说,只更新那些修改过的属性。

bruce
2003-08-30 00:14
试了一下,的确如此。

只不过有点想不通,为什么Gavin不把动态update和insert默认值设为真值,这样的话,SQL语句产生的不是更合理吗?

robbin
2003-08-30 00:59
上次帖子我已经分析过了,动态产生sql效率比较低。

bruce
2003-08-30 01:10
不好意思,菜了一把。

猜你喜欢