原文地址: https://yan-sa.iteye.com/blog/1913684

由于我在action层使用了注解多例@Scope("prototype"),而在dao层默认为单例......

我把sessionFactory写在了一个通用的basedao实现类中,

而在dao实现类中直接继承了basedao实现类,同时继承了sessionFactory...

本人能力有限,尚不知道与以上的设计有无紧要关系......用了网上的解决办法(添加属性dynamic-update和select-before-update都没效果)

最后还是决定这样:

和以下步骤是一样的......

在网上搜索到的文章部分内容如下:

  对于dynamic-update是重点需要讲解的地方,这里的情况比较复杂。

  首先先来明确这一属性的含义,如果该属性设置为true,表明Hibernate在向数据库发送更新语句时只会包括属性值发生改变的属性,其实要说明的就是当将该属性设置为true,并不表明你的设置就起作用了,这取决于你使用的更新方法和查找与更新操作是否处在同一个session当中

  对于更新操作而言,分三步走,第一步是查找出需要更新的实体,第二步是更新需要更新的属性,第三步是保存更新实体。

  如果这三步操作没有在同一个session的管理之下,那么即便设置了dynamic-update=true,这个属性也是不会起任何作用的,当你在保存更新时,Hibernate向数据库发送的更新语句还是会包括该实体的所有属性。

  所以当你设置了dynamic-update=true时,你需要确保你的三步操作是在同一个session中的。

  当然为了确保当进行更新操作时只更新那些修改了的属性,还有其它一些做法,但需要发送的sql语句也就不止一条更新语句那么简单而已,这需要你经过权衡后进行适当的选择。

  下面就来讲解还有其它哪些做法能保证在进行更新操作时只更新那些修改了的属性。

  第一种做法就是在配置文件中的class元素上再加上另一个属性值,select-before-update="true",这个属性表示当我们在进行更新操作时,会先去数据库中查找这个实体对象的数据,这样就保存了当我们在进行更新操作时,查找后更新始终都在同一个session当中

  第二种是更改更新操作的方法,使用session为我们提供的merge方法,当我们实用该方法时,是不需要配置dynamic-update=true属性的。该方法在更新对象时所做的操作和前一种方法是一样的,会先从数据库中查找该实体对象数据再向数据库发送只更新更改过的属性的更新操作,同样的会发送两条sql语句。但是如果所有对象属性都没有变化时,那么不会发送更新语句。

转载于:https://www.cnblogs.com/Meiwah/p/10882104.html

hibernate dynamic-update=true属性不起作用原因(转载)相关推荐

  1. 关于Hibernate中inverse=true的转载

    1.到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或删除对像时更方便一些,只要在cascade的源头上插入或是删除,所 ...

  2. Hibernate:映射文件元素属性说明

    为什么80%的码农都做不了架构师?>>>    Doctype <?xml version="1.0" encoding="UTF-8" ...

  3. jeecg自定义按钮使用exp属性不起作用

    jeecg自定义按钮使用exp属性不起作用 为什么要写这篇文章? 之前写过一篇类似的文章 jeecg笔记之自定义显示按钮exp属性,但是有些小伙伴留言参考后不起作用,当时我的 jeecg 版本为3.7 ...

  4. 自动配置原理精讲||@Conditional ||怎么知道哪些自动配置类生效? 启用debug=true属性(在配置文件配置);

    自动配置原理精讲 派生注解 配置文件怎么配置 server.port spring.config.location="D://application.properties" htt ...

  5. [html] html标签中的lang属性有什么作用?

    [html] html标签中的lang属性有什么作用? 根据lang属性来设定不同语言的css样式,或者字体告诉搜索引擎做精确的识别让语法检查程序做语言识别帮助翻译工具做识别帮助网页阅读程序做识别等等 ...

  6. [html] html5中的meta标签http-equiv属性有什么作用?

    [html] html5中的meta标签http-equiv属性有什么作用? http-equiv是http5新增的属性,用于把 content 属性关联到 HTTP 头部,可模拟响应头.例如:con ...

  7. css transtion不生效_CSS中transition属性不起作用的原因及解决方法

    CSS中的transition属性可用于调整元素更改的时间,它可以像动画一样显示.虽然transition属性可以很方便的实现过渡效果,但是有时候可能会出现无效的情况,所以我们就需要来理解transi ...

  8. canvas clear 指定属性的元素_好程序员web前端分享CSS属性组成及作用

    好程序员web前端分享CSS属性组成及作用 学习目标 1.css属性和属性值的定义 2.css文本属性 3.css列表属性 4.css背景属性 5.css边框属性 6.css浮动属性 一.css属性和 ...

  9. BIND9源码分析之 多个view的情况下如何做dynamic update

    BIND中view的存在提供了一种较好的智能DNS方案,BIND可以根据用户的来源IP为其返回不同的Resource Record. 但是关于DNS动态更新的RFC2136中并没有提及view(vie ...

最新文章

  1. 速度快到飞起 如何跟蜻蜓的大脑学习计算?
  2. java中static、final、static final的区别
  3. java的静态内部类
  4. 为什么要叫python-为什么要学 Python?
  5. C# addin 开发心得记录
  6. Myeclipse 10 使用之修改字体
  7. 自学编程成功概率有多少可能
  8. “约见“面试官系列之各系列目录汇总(建议学习收藏)
  9. 在内存中建立文件_磁盘与文件,搞懂它
  10. 读《编程之美》读后感3
  11. MyBatis学习总结(8)——Mybatis3.x与Spring4.x整合
  12. 机器学习中的概率模型和概率密度估计方法及VAE生成式模型详解之二(作者简介)...
  13. Pycharm安装numpy失败
  14. My Fifty-Sixth Page - 子集Ⅱ - By Nicolas
  15. 脱壳工具 postern.apk文件
  16. Java实现身份证号合法性校验(包含港澳台地区)
  17. 手工冰粉社区forum.bingfen.com.cn上线...xiuno模版V2完善记录
  18. 英飞凌微控制器,驱动物联网的关键“大脑”
  19. doubb超时_dubbo源码分析(二):超时原理以及应用场景
  20. 【noip2005】采药

热门文章

  1. js控制ul的显示隐藏,对象的有效范围
  2. PHP中的Array类型其实是Hashtable
  3. 构建和实现单点登录解决方案
  4. 【Java从0到架构师】SpringCloud - Eureka、Ribbon、Feign
  5. 【MyBatis笔记】08-输出类型
  6. 【MyBatis笔记】03-映射文件的sql语句中 #{} 和 ${} 的区别以及实现模糊查询
  7. 数据库与Excel表格链接PHP,php读取Excel表格(Excel也可以做数据库)调用phpExcel类库...
  8. 如何在局域网搭建php网站,【自己网站搭建】如何使用本地计算机,建立本地网站?怎样才能让局域网上的人都能访问到我电脑上的本地网站?...
  9. mysql more和tail_cat、less、more、head、tail这几个命令区别
  10. 计算机网络 第五章 运输层