dynamic-update 可选 默认false UPDATE SQL会在运行时生成且只包括值发生变化的列。
dynamic-insert 可选 默认false INSERT SQL会在运行时生成且只包括值不为null的列。1
配置方式:
Hibernate3:
1 2 3 4 |
@org.hibernate.annotations.Entity( dynamicUpdate = true, dynamicInsert = true ) |
Hibernate4:
1 2 |
@DynamicUpdate(value=true) @DynamicInsert(value=true) |
性能影响:
Hibernate会为每一个entity缓存它的INSERT/SELECT/UPDATE SQL语句。这样我们在保存、查找、更新entity时,不需要再去动态的计算这些SQL。
然而,当我们使用dynamic-insert、dynamic-update时, Hibernate都要重新计算一次相应的SQL语句,在Hibernate层面会有性能损耗。
所以我们需要在数据库及Hibernate的开销上做权衡。
在我看来,只有表中有庞大的blog列或者有超多的列,dynamic insert、 dynamic update才有意义;否则我不认为它们会带来性能提升。2
使用效果
仅仅提供使用效果,但我不认同其作者对性能影响的评价。
最新评论
昨天发现的,然后在application.yml中配置“hibernate.dialect.storage_engine=innodb”。但是自动生成的表还是不会设置为innoDB,看了底层源码。这个配置也是没有加载到的 原来是要在hibernate.properties中加这个配置。感谢
将virtualbox虚拟网卡驱动卸载了,然后就会好了,但是这个时候virtualbox虚拟网络就无法使用了,重新安装一下virtualbox就好了
我也发现了这个注释:注释“Use "hibernate.dialect.storage_engine=innodb" environment variable or JVM system property instead.” ----- 坑啊。。。。。。。
卸载蓝牙驱动·在设备里面找,一般在网卡那里 卸载重启就行了
高