Hibernate 动态Update的问题

记得前面有个帖子讨论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"
/>

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


试了一下,的确如此。

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

上次帖子我已经分析过了,动态产生sql效率比较低。

不好意思,菜了一把。