Hibernate动态更新
Hibernate一级缓存:
Hibernate有一级和二级缓存。一级缓存就是Session。
在Hibernate启动的时候,SessionFactory解析映射文件的时候,会根据映射文件中的字段生成查询、删除和更新语句。例如Student类对应的映射为id->id,name->s_name,age->s_age。后面的字段是数据库定义字段。那么在Hibernate启动的时候,会为Student生成查询语句 select * from student,删除语句delete from student where id= ?,更新语句:update student set s_name =? ,s_age = ? where id = ?。
Hibernate这样做,自然是为了运行时的性能考虑。
动态更新的需求:
但是当表中的字段过多,而我们需要更新的字段却很少的情况下,Hibernate这种工作方式,无疑会带来数据库的压力。甚至有的情况是,我们虽然执行了session.update()语句,但是数据本身和数据库是一样的,并不需要更新。Hibernate不会自动处理这种情况,我们可以通过配置来完成动态更新。
动态更新的实现:
实现动态更新数据,必须把对象中的数据和数据库数据进行对照,也就是说我们必须先进行查询。查询后,对比数据,然后只针对修改的数据进行更新。
查询对于数据库性能的影响微乎其微,所以在相应的实体类映射文件中,推荐使用动态更新。
对于xml映射文件来说,在<class>元素上添加属性select-before-update="true" dynamic-update="true"。
对于实体类注解来说,在类上面使用注解:
动态更新适用环境:
对于字段过多表来说,应该使用动态更新;
对于更新频繁的表来说,应该使用动态更新;
对于使用了Hibernate拦截器,而又不想使用事务的时候,应该使用动态更新。
Hibernate动态更新的更多相关文章
- Hibernate 注解 动态插入( DynamicInsert) 动态更新(DynamicUpdate)
@DynamicUpdate(value = true)@DynamicInsert(value = true) 这两个注解默认是false,经试验,如果使用了这两个注解,在一定程度上是可以提高插入和 ...
- JSPatch – 动态更新iOS APP
原文:http://blog.cnbang.net/works/2767/ JSPatch是最近业余做的项目,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C的 ...
- JAVA代码热部署,在线不停服动态更新
本地debug的时候,可以实时编译并更新代码,线上也可以不停服来动态更新类,即所说的java热部署. JDK代理的两种方式: 1.premain方式是Java SE5开始就提供的代理方式,但其必须 ...
- elasticsearch同义词及动态更新
第一种:参考地址:http://dev.paperlesspost.com/setting-up-elasticsearch-synonyms/271.Add a synonyms file.2.Cr ...
- 在Android中实现service动态更新UI界面
之前曾介绍过Android的UI设计与后台线程交互,据Android API的介绍,service一般是在后台运行的,没有界面的.那么如何实现service动态更新UI界面呢?案例:通过service ...
- Android中动态更新ListView(转)
在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中.实现步骤:调用ListView的setOnSc ...
- Js多国时间动态更新
Js多国时间动态更新 点击下载
- Fragment碎片的创建和动态更新
Fragment,在平板应用中较为参见,把视图分为两个甚至多个模块. 一,一个简单的fragment 1.创建两个局部文件,用于等待被调用 (1)left_fragment (2)right_frag ...
- django 动态更新属性值
django 动态更新属性值 class TestTime(models.Model): """ 功能说明:指定测试的每一关总用时 """ ...
随机推荐
- slatsatck file模块2种写法及系统初始化
一 . lamp搭建 file2种写法 saltstack--一键yum lamp:---请注意重点: http://www.blogs8.cn/posts/WLjId80 知识点: 文件的2种写 ...
- eclipse使用
Eclipse 是一个开放源代码的.基于 Java 的可扩展开发平台. Eclipse 是 Java 的集成开发环境(IDE),当然 Eclipse 也可以作为其他开发语言的集成开发环境,如C,C++ ...
- WPS2013三合一全套精品视频教程-【word,excel,powerpoint】
WPS2013三合一全套精品视频教程-[word,excel,powerpoint]教程目录: 下载地址:http://www.fu83.cn/thread-184-1-1.html
- sql截取
String sql2="select count(*) from t_testuser where substr(INSETTIME,1,10)=to_char(sysdate,'yyyy ...
- java web 的标准目录结构(zz)
http://blog.csdn.net/bluesnail216/article/details/7744607 --yourproject --src --java 运行的j ...
- swift第一季基础语法
同: 一.基础 同: 1常量和变量 2数据类型和数据类型转换 3别名 不同: 1可选类型optional 2BOOL类型 3元组类型 4断言Assertion 二.基本操作符 同: 1赋值和算术运算及 ...
- css的小三角实现的方式
先上一个简单的例子哈: 此时的方向向下. 如果想方向向上的话用:border-top:0;border-bottom:4px solid; 1. width:0 height:0 border宽度,颜 ...
- 服务器网站报错:由于扩展配置问题无法提供您请求的页面,请添加MIME映射,针对mp4,flv文件类型无法打开。
确保IIS正常 服务器增加mp4格式的MIME 类型映射设置的具体步骤是: “开始” > “控制面板” > “管理工具” >“Internet 信息服务(IIS管理器)”,“MIME ...
- [POJ3177]Redundant Paths(双联通)
在看了春晚小彩旗的E技能(旋转)后就一直在lol……额抽点时间撸一题吧…… Redundant Paths Time Limit: 1000MS Memory Limit: 65536K Tota ...
- java--- Map详解
Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collecti ...