NHibernate SQL优化小技巧使用dynamic-insert="true" insert="true"
来源:互联网 发布:sql图书管理系统代码 编辑:程序博客网 时间:2024/05/22 07:45
================testSaveUser=================
Hibernate: insert into Users (age, firstname, lastname) values (?, ?, ?)
================testUpdateUser=================
Hibernate: insert into Users (age, firstname, lastname) values (?, ?, ?)
Hibernate: update Users set age=?, firstname=?, lastname=? where ID=?
如果我们在<class ...>中加上 dynamic-insert="true" dynamic-update="true",变成如下。
<class name="model.User" table="Users" dynamic-insert="true" dynamic-update="true">
再次运行测试类,就会发现生成的SQL中涉及的字段只包含User类中修改的属性所对应的表字段。
================testSaveUser=================
Hibernate: insert into Users (age) values (?)
================testUpdateUser=================
Hibernate: insert into Users (age) values (?)
Hibernate: update Users set firstname=? where ID=?
如果一个表的结构很复杂,字段很多的情况下,使用dynamic-insert,dynamic-update能够性能上的少许提升。
================好玩的分隔线=================
Hibernate允许我们在映射文件里控制insert和update语句的内容.比如在映射文件中<property 元素中的update属性设置成为false,那么这个字段,将不被包括在基本的update语句中,修改的时候,将不包括这个字段了.insert同理.dynamic动态SQL语句的配置也是很常用的.下面介绍配置SQL语句的具体属性:
1)<property>元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true
2)<property>元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true
3)<class>元素 mutable属性:设置为false就是把所有的<property>元素的update属性设置为了false,说明这个对象不会被更新,默认true
4)<property>元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false
5)<property>元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
6)<class>元素 dynamic-insert属性:设置为true,表示把所有的<property>元素的dynamic-insert属性设置为true,默认false
7)<class>元素 dynamic-update属性:设置为true,表示把所有的<property>元素的dynamic-update属性设置为true,默认false
Hibernate生成动态SQL语句的消耗的系统资源(比如CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把dynamic-update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.
- NHibernate SQL优化小技巧使用dynamic-insert="true" insert="true"
- Hibernate SQL优化小技巧使用dynamic-insert="true" dynamic-update="true"
- Hibernate SQL优化技巧dynamic-insert="true" dynamic-update="true"
- dynamic-insert="true" dynamic-update="true"有玄机
- dynamic-update="true".dynamic-insert="true"的使用情况。
- dynamic-insert="true" dynamic-update="true",插入默认值的情况
- ORACLE SQL-UPDATE、DELETE、INSERT优化和使用技巧
- Mysql query select case when true insert
- NHibernate 如何对session管理,实现lazy=true
- hibernate dynamic-insert 和 dynamic-update使用
- hibernate dynamic-insert 和 dynamic-update使用
- hibernate的动态更新(dynamic-update = "true")
- dynamic-insert,dynamic-update
- Spring abstract="true" merge="true"
- auto_now_add=True和auto_now_add=True
- Python小技巧 – True or False
- Hibernate优化(1)dynamic-insert和dynamic-update
- 如何使用<identity impersonate="true"/>
- apt-get install 报错处理
- 检测退出时的内存泄漏点
- metasploit --命令学习2
- myeclipse6.5中使用Alt+/不自动提示的修改
- 细说Activity的singleTask加载模式
- NHibernate SQL优化小技巧使用dynamic-insert="true" insert="true"
- C++第十七周【任务一】 学生成绩处理
- 关于报工和生产订单的一些状态解释
- Sql server索引学习笔记
- Window和Linux下Socket的区别
- xss 语句大全
- 配对的Student's t-test
- 方法的可变参数
- java内存分配机制