hibernate脏数据_Hibernate脏检查的剖析

hibernate脏数据

介绍

持久性上下文使实体状态转换入队 ,该实体状态转换在刷新后转换为数据库语句。 对于托管实体,Hibernate可以代表我们自动检测传入的更改并安排SQL UPDATE。 这种机制称为自动脏检查

默认的脏检查策略

默认情况下,Hibernate检查所有托管实体属性。 每次加载实体时,Hibernate都会复制所有实体属性值。 在刷新时,每个受管实体属性都会与加载时快照值匹配:

defaultflusheventflow1

因此,各个脏检查的数量由以下公式给出:

latex.php

哪里

n =受管理实体的数量
p =给定实体的实体数

即使单个实体的仅一个属性发生了变化,Hibernate仍将检查所有托管实体。 对于大量的受管实体,默认的脏检查机制可能会占用大量CPU和内存。 由于初始实体快照是单独保存的,因此持久性上下文所需的内存是所有受管实体通常占用的内存的两倍。

字节码检测

一种更有效的方法是在值更改时标记脏属性。 与原始的深度比较策略类似,优良作法是将域模型结构与更改检测逻辑分离。 自动实体更改检测机制是一个跨领域的问题 ,可以在构建时或运行时进行编织。

实体类可以附加实现自动脏检查机制的字节码级指令。

编织方式

字节码增强可以发生在:

  • 构建时间编译Hibernate实体之后,构建工具(例如ANT , Maven )将在每个已编译实体类中插入字节码级别的指令。 由于类是在构建时增强的,因此此过程不会产生额外的运行时损失。 可以针对增强的类版本进行测试,以便在构建项目之前验证实际的生产代码。
  • 运行时可以使用以下方法完成运行时编织:
    • Java代理,在实体类加载时进行字节码增强

迈向默认字节码增强脏检查

Hibernate 3一直通过ANT目标提供字节码检测,但是它从未成为主流,大多数Hibernate项目目前仍在使用默认的深度比较方法。

虽然其他JPA提供程序(例如OpenJPA , DataNucleus )一直在支持字节码增强方法,但是Hibernate才刚刚开始朝这个方向发展,提供了更好的构建时选项,甚至提供了自定义的脏检查回调 。

在我的下一篇文章中,我将向您展示如何使用自己的应用程序特定策略自定义脏检查机制。

翻译自: https://www.javacodegeeks.com/2014/08/the-anatomy-of-hibernate-dirty-checking.html

hibernate脏数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python查询sql_Python处理SQL语句(提供SQL查询平台使用)

在搞公司的SQL查询(MySQL)平台时,需要对用户查询SQL进行条数限制,默认是在配置文件中配置一个“limit 1000”这样的参数。最自然想到的就是对用户通过web传入的SQL做处理,默认加上limit参数。这样一来就有这么几个问题需要处理:1…

php组成,php接口有几部分组成?

程序接口,由一套陈述、功能、选项、其它表达程序结构的形式、以及程序师使用的程序或者程序语言提供的数据组成PHP接口(interface)的特点1、接口的方法必须是公开的。2、接口的方法默认是抽象的,所以不在方法名前面加abstract。3、接口可以定义常量&…

AWS Elasticsearch后模式

因此,碰巧我们在SaaS版本的LogSentinel上遇到了生产问题–我们的Elasticsearch停止了对新数据编制索引。 由于Elasticsearch只是辅助存储,因此没有数据丢失,但这给我们的客户带来了一些问题(他们无法在其仪表板上看到实时数据&…

python设置word背景色_Python数据可视化:WordCloud入门

WordCloud是一种很好的展现数据的方式,网上也有不少小工具和在线网页。但是有些不支持中文,有些安装复杂,所以决定用Python实现。主要参考官网,通过官网的例子,讲一下WordCloud的制作。主要流程获取内容的路径如果是一…

java 解析日期格式_日期/时间格式/解析,Java 8样式

java 解析日期格式自Java 几乎 开始以来,Java开发人员就通过java.util.Date类(自JDK 1.0起)和java.util.Calendar类(自JDK 1.1起 )来处理日期和时间。 在这段时间内,成千上万(甚至数百万&#x…

php第三方登录代码,thinkPHP5项目中实现QQ第三方登录功能

本文实例讲述了thinkPHP5项目中实现QQ第三方登录功能。分享给大家供大家参考,具体如下:最近用thinkPHP 5框架做了一个婚纱店的项目,在开发过程中需要用到第三方登录,腾讯官方给的案例是几个文件相互包含实现的,放到tp5…

mac 显示隐藏文件_如何在Mac上显示隐藏文件?苹果mac显示隐藏文件夹方法

与任何操作系统一样,macOS会将重要文件隐藏起来,以防止意外删除它们并因此而损坏系统。但是,在某些情况下,您可能需要在Mac上显示隐藏文件,例如,浏览“ 库”文件夹并清除旧日志,缓存或其他垃圾文…

分布式虚拟跟踪

跟踪提供了对系统的可见性,使开发人员和操作人员可以在运行时观察应用程序。 当系统不断增长并与更多微服务进行交互时,跟踪变得非常有价值。 在这样的环境中,这些痕迹非常棒,可以定位导致性能下降的故障和瓶颈。 在这篇文章中&a…

php 删除数组的空元素,php删除数组空元素的方法_后端开发

php如何实现自动跳转_后端开发php实现自动跳转的方法:1、通过php内置函数“header”,将http响应头中的“Location”设置为要跳转的URL即可;2、可以在javascript代码中将“window.location.href”指向要跳转的URL即可。php删除数组空元素的方法…

map for循环_JavaScript 用 for 循环太 low?你是不是有什么误解

天要吐槽下,我时不时地看到有些文章说“循环语句不好,你应该用 filter,map 和 reduce ”——每次看到有文章鼓吹,所有需要循环的场景一律用这几个函数式方法,我都恨得牙痒痒。没错,这些函数式方法确实有它们…

vue 动态组件组件复用_真正的动态声明性组件

vue 动态组件组件复用在这篇简短的文章中,我将重点介绍ADF动态声明性组件。 我的意思是一个众所周知的ADF标签af:declarativeComponent 。 它可以用作将页面设计为页面片段和组件组成的一种非常便捷的方法。 例如,我们的页面可以包含以下代码…

简单工程验收单表格_中铁超大型工程项目-123个精细化管理手册配套表格附件,超全...

中铁超大型工程项目-123个精细化管理手册配套表格附件,超全!什么是项目精细化?答:工程项目精细化管理是一个系统的管理体系,包含一系列管理制度和办法,除了《工程项目精细化管理办法》这个纲领性文件外&…

php 执行 javascript,Bash/PHP/Javascript:如何运行输出javascript的php文件,并执行该javascript?...

目前我试图发送一个webhook请求来争执,所以我可以发送更新到我的资源库到我的不一致服务器中的一个频道。如果我在浏览器中加载页面,它会运行此代码,并且该消息将出现在我的不一致中:$(document).ready(function(){setTimeout(sen…

递归分解WAR文件

抽象 是否曾经需要分解WAR文件以及分解WAR文件中的所有JAR文件? 是的,我也是! 我写了Ferris-war-exploder来爆炸: 一个JAR文件 一个WAR文件,它找到的每个JAR文件也会爆炸。 包含每个JAR文件(请参阅&…

判断unsigned long long乘法溢出_信息安全课程17:缓冲区溢出2

在之前所讲述的内容中,都是我们在自己的程序中自行修改的;正常情况下,没有程序员会在自己的代码中这样写——那有没有办法攻击别人正常的程序呢?攻击者怎么样能够影响到不是自己的程序的返回地址呢?以及怎么样通过攻击…

java 保垒机telnet,开源堡垒机系统Teleport

一. teleport简介Teleport是一款简单易用的堡垒机系统,具有小巧、易用的特点,支持 RDP/SSH/SFTP/Telnet 协议的远程连接和审计管理。Teleport由两大部分构成:跳板核心服务WEB操作界面官网地址: https://tp4a.com/ 官网文档: https://docs.…

choiceformat_ChoiceFormat:数字范围格式

choiceformatChoiceFormat类的Javadoc指出ChoiceFormat “允许您将格式附加到一系列数字上”,并且“通常在MessageFormat中用于处理复数”。 这篇文章描述了java.text.ChoiceFormat并提供了一些在Java代码中应用它的示例。 ChoiceFormat与java.text包中其他“ 格式…

python和rpa_什么是RPA

产品介绍阿里云RPA产品是一款新型工作流程自动化办公机器人软件,通过模拟人工操作进行自动流程执行处理。它可以将办公人员从每日的重复工作中解放出来,提高生产效率。具体而言,阿里云RPA是基于软件机器人和人工智能(AI,Artificia…

php背景图片随页面大小改变,css背景图根据屏幕大小自动缩放

css背景图根据屏幕大小自动缩放代码:html,body{margin:0px;padding:0px;}#background { position: fixed;top: 0;left: 0;width: 100%;height: 100%;overflow: hidden;background-color: #211f1f; display:none\8;}#background .bg-photo {position: absolute;top: …

Java –缺少字体–崩溃的应用程序!

Eclipse MAT和Heaphero都是分析大型堆转储的流行Java工具。 最近,当我们尝试在Eclipse MAT中分析堆转储文件时遇到了一个有趣的问题。 工具因缺少字体crash而崩溃。 我们认为我们将与您分享发现的结果。 CompositeStrike.getStrikeForSlot()…