最近在使用Hibernate4中,发现两个颇有奥秘的注解 @DynamicInsert 和 @DynamicUpdate数据库
若是是在配置文件的话那就是dynamic -insert 和 dynamic-updatesession
这两个注解在必定程度上能够增长与数据库操做相关的速度,能够节省SQL语句的执行时间,提升程序的运行效率。测试
使用这两个注解只须要在实体类上加入便可,或者在*.hbm.xml配置。这两个注解是boolean值,true或者false。spa
1.首先使用false来看一下执行的结果,咱们就拿更新来举例:3d
a.数据库的数据是这样的:xml
b、实体类的代码对象
C、测试类代码:blog
执行测试方法后你们能够看到:ip
我只更新了Description这个属性,可是却把整个对象的属性都更新了,这在必定程度是影响了效率。并且可能并非咱们但愿的结果,咱们但愿的结果是我更改了哪些
字段就只要更新我修改的字段就能够了,接下来咱们把@DynamicUpdate(false)改成@DynamicUpdate(true) 测试一下 ,结果以下io
神奇了,这就是见证奇迹的时刻,达到了咱们的目的,只更新咱们修改过的字段。@DynamicInsert我就不举例了。
测试以后能够知道:
在Hibernate中能够利用@DynamicInsert和@DynamicUpdate生成动态SQL语句,即在插入和修改数据的时候,语句中只包括要插入或者修改的字段。
固然还有其余的方式达到这种效果,好比使用session为咱们提供的merge方法,也是能够的。