Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
2015-12-25 17:39
549 查看
最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 @DynamicUpdate
如果是在配置文件的话那就是dynamic -insert 和 dynamic-update
这两个注解在一定程度上可以增加与数据库操作相关的速度,可以节省SQL语句的执行时间,提高程序的运行效率。
使用这两个注解只需要在实体类上加入即可,或者在*.hbm.xml配置。这两个注解是boolean值,true或者false。
1.首先使用false来看一下执行的结果,我们就拿更新来举例:
a.数据库的数据是这样的:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/05a85a9db3ac433e62c51fb6e1b48416.png)
b、实体类的代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/0cdb83b197a44e756f2b3175698c0347.png)
C、测试类代码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/5918a9422dbb223bbd42ef1d7cdf7b72.png)
执行测试方法后大家可以看到:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/0a312e6cca20dac821dc944cdaeca9f3.png)
我只更新了Description这个属性,但是却把整个对象的属性都更新了,这在一定程度是影响了效率。而且可能并不是我们希望的结果,我们希望的结果是我更改了哪些
字段就只要更新我修改的字段就可以了,接下来我们把@DynamicUpdate(false)改为@DynamicUpdate(true) 测试一下 ,结果如下
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/10256a81909718f0587003d0602db2cd.png)
神奇了,这就是见证奇迹的时刻,达到了我们的目的,只更新我们修改过的字段。@DynamicInsert我就不举例了。
测试之后可以知道:
在Hibernate中可以利用@DynamicInsert和@DynamicUpdate生成动态SQL语句,即在插入和修改数据的时候,语句中只包括要插入或者修改的字段。
当然还有其他的方式达到这种效果,比如使用session为我们提供的merge方法,也是可以的。
如果是在配置文件的话那就是dynamic -insert 和 dynamic-update
这两个注解在一定程度上可以增加与数据库操作相关的速度,可以节省SQL语句的执行时间,提高程序的运行效率。
使用这两个注解只需要在实体类上加入即可,或者在*.hbm.xml配置。这两个注解是boolean值,true或者false。
1.首先使用false来看一下执行的结果,我们就拿更新来举例:
a.数据库的数据是这样的:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/05a85a9db3ac433e62c51fb6e1b48416.png)
b、实体类的代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/0cdb83b197a44e756f2b3175698c0347.png)
C、测试类代码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/5918a9422dbb223bbd42ef1d7cdf7b72.png)
执行测试方法后大家可以看到:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/0a312e6cca20dac821dc944cdaeca9f3.png)
我只更新了Description这个属性,但是却把整个对象的属性都更新了,这在一定程度是影响了效率。而且可能并不是我们希望的结果,我们希望的结果是我更改了哪些
字段就只要更新我修改的字段就可以了,接下来我们把@DynamicUpdate(false)改为@DynamicUpdate(true) 测试一下 ,结果如下
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/01/10256a81909718f0587003d0602db2cd.png)
神奇了,这就是见证奇迹的时刻,达到了我们的目的,只更新我们修改过的字段。@DynamicInsert我就不举例了。
测试之后可以知道:
在Hibernate中可以利用@DynamicInsert和@DynamicUpdate生成动态SQL语句,即在插入和修改数据的时候,语句中只包括要插入或者修改的字段。
当然还有其他的方式达到这种效果,比如使用session为我们提供的merge方法,也是可以的。
相关文章推荐
- Oracle12cr1新特性之容器数据库(CDB)和可插拔数据库(PDB) 的启动和关闭
- oracle编码格式从utf-8转换为GBK
- 使用JMeter创建数据库(Mysql)测试
- NoSql
- Oracle 常用语句整理
- Mysql 几种日志分析
- MySQL Replication 优化和技巧、常见故障解决方法
- nodejs + express + ejs + mongodb本地环境安装及搭建
- Mysql 查看连接数,状态
- mongodb日记篇
- MAC PHP+nginx+mysql+redis+memcache+mongo....环境配置
- mysql 查看表的类型
- 阅读Nosql代码有感
- 数据库编码问题
- mysql utf8mb4与emoji表情
- 无法使用SQL 2012服务器上创建新的XenDesktop站点
- 查看Oracle有哪些表或者视图
- 使用show profile分析单条查询
- Django同步数据库不能创建app表
- Windows下Magento企业版如何配置Redis存储缓存