问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

hibernate中什么叫做脏数据

发布网友 发布时间:2022-08-26 05:05

我来回答

2个回答

热心网友 时间:2023-12-15 22:13

Hibernate脏数据检查

何谓脏数据(Dirty Data)?

这里的"脏"可能有些误解,脏数据并不是说非废弃或者无用的数据,而是指一个数据对象所携带的信息发生了改变之后的状态. 事务提交时,HIbernate会对Session中的PO进行检测,判断那些发生了变化,并装发生变化的数据更新到数据库中.

Hibernate脏数据的检查一般策略大致有下面两种:

数据对象监控

数据对象监控的实现方式,大体上是通过*对数据对象的设值方法(setter)进行拦截,*的实现可以借助Dynamic Proxy或者CGlib实现.一旦数据对象的设置方法被调用(通常这也意味着数据对象的内容发生变化),则将其标志为"待更新"状态,之后在数据库操作时将其更新到对应的库表.

数据版本比较

在持久层框架中维持数据对象的最近读取版本,当数据提交时数据与些版本进行比对 时,如果发生变化则将期同步到数据库相应的库Hibernate采取的是第二种检查策略

Hibernate数据缓存

Hibernate数据缓存是数据库数据在内存中的临时容器,它包含了库表数据在内存中的临时拷贝,位于数据库与数据访问层之间,缓存(Cache)往往是提升系统性能的关键因素.

数据缓存策略

ORM数据缓存应包含以下几个层次的内容:

◆事务级缓存(Transaction Layer Cache)

◆应用级/进程级缓存(Application/Process Layer Cache)

◆分布式缓存(Cluster Layer Cache)

事务级缓存

这里的事务可能是一个数据库事务,也可能是某个应用级事务.对于Hibernate而言,事务级缓存是基于Session生命周期实现的.每个Session会在内部维持一个数据缓存,此缓存随着Session的创建(销毁)而存在(消亡),因此也叫Session Level Cache(也称内部缓存)

应用级缓存

此缓存可由多个事务(数据事务或者应用级事务)共享,事务之间的缓存共享策略与应用的事务隔离机制密切相关.在Hibernate中,应用级缓存在SessionFactory层实现,所有由此SessionFactory创建的Session实例共享此缓存,因此也称为SessionFactory Level Cache.

分布式缓存

分布式缓存由多个应用级缓存实例组成集群,通过某种远程机制(如RMI或JMS)实现各个缓存实例间的数据同步,任何一个实例的数据修改操作,将导致整个集群间的数据状态同步.

需要注意的是,如果当前的应用与其他应用共享数据库,也就是说,在当前应用过程中,其他应用可能同时更新数据库,那么缓存策略的制定就需要格外小心了,这种情况下,一般采取一些保守策略可能会更加稳妥.

Hibernate数据缓存

以Hibernate主义加以区分,Hibernate数据缓存可分为以下两个层次:

◆内部缓存(Session Level,也称一级缓存)

◆二级缓存(SessionFactory Level,也称为二级缓存)

Hibernate中,缓存将在以下情况中发挥作用:

通过主键id加载数据.这包括根据id查询数据的Session.load方法,以及Session.iterate等 批量查询方法(Session.iterate进行查询时,也是根据id在缓存 中查找数据,类似一个Session.load循环).

延迟加载

Session在内部维护了一个Map数据类型,些数据类型中保持了所有与当前Session相关联对象. 内部缓存正常情况下由Hibernate自动维护,如果需要手动干预,我们可以通过以下方法完成:

◆Session.evict,将某个特定的对象从内部缓存中清除

◆Session.clear,清空内部缓存

二级缓存

在引入二级缓存时,应该考虑以下问题:

◆数据库是否与其他应用共享

◆应用是否需要部署在集群环境中.

如果满足以下条件,将纳入缓存管理:

◆数据不会被第三方应用修改

◆数据大小(Data Size)在可接受的范围之内.

◆数据更新频率较低

◆同一数据可能会被系统频繁引用.

◆非关键数据(关键数据,如金融帐户数据)。

第三方缓存实现

Hibernate本身并未提供二级缓存的产品化实现,而是为众多的第三方缓存组件提供了接入接口,较常用的第三方组件有:

1. JCS2. EHCache3. OSCache4. JBossCache5. SwarmCacheHibernate中启用二级缓存,需要在hibernate.cfg.xml配置hibernate.cache.provider_class参数,之后,需要在映射文件中指定各个映射实体(以及collection)的缓存同步策略。Hibernate提供了一下4种内置的缓存同步策略:1. read-only只读。对于不会发生改变的数据,可使用只读型缓存。

2. nonstrict-read-write如果程序对并发访问下的数据同步要求不是非常严格,且数据更新操作频率较低,可以采用本选项,获得较好的性能。

3. read-write严格可读写缓存。基于时间戳判定机制,实现了“read committed”事务隔离等级。可用于对数据同步要求严格的情况,但不支持分布式缓存。这也是实际应用中使用最多的同步策略。

别人的 希望对你有帮助

热心网友 时间:2023-12-15 22:13

一般都说“读脏数据”
根据我的理解是这样的,比如:某人在对某条数据执行更改操作,而同时,又有某个人在对该记录执行读操作。 理论上,读操作应该读出的是更改后的数据,但是由于某些原因吧,读出的是更改之前的数据,像这样的数据就叫做脏数据。原因很简单,这条数据已过期,非最新的数据。
这纯属我个人的理解。有不对的地方请指教
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
微信限额20万怎样提到30万 微信怎么提升限额 微信限制额度二十万了怎么办 爱奇艺电视版会员电影没声音 爱奇艺怎么没声音了 爱奇艺万能播放器怎么没声音-爱奇艺播放器没声音修复方法 爱奇艺播放没有声音了怎么回事 主持人刘炽朗诵《采桑子·重阳》 卧室空间大了摆放什么风水好 卧室空间大了摆放什么 中国平安金融集团上海分公司这公司是一家怎样的公司?是骗子吗? 兔肉的营养价值及功效 给妈妈的一封信作文100字左右 求元旦祝福语,公司群发给客户的!谢谢 谁能教我些做港式的方法? 听说这个方法可以快速长发,请问谁有试过,真的有用么? 取消网上申请信用卡该怎么做 这几种方法你试过吗? 你好,这个方法你试过吗?还是有成功的 太阳穴凹陷了怎么办?这三种方法你都试过吗? ...被染上色了,放在淘米水中煮沸,颜色就回来咯,这个方法你试过了... 帮我解读一下平安福重疾险的内容 关羽为什么是红皮肤? ...是什么 等闲识的东风面万紫千红总是春原文及翻译 请问怎么查看手机号码绑定的支付宝,我用现在这个号码绑定支付宝,提示已 ... 双臂的意思 荆溪白石出,天寒红叶稀。山路元无雨,空翠湿人衣。(打一动物) 荆溪白石出, 天寒红叶稀。保岗(叶)此供36种字花猜一种动物? 有谁知道写秋天的古诗词 面包花篮馒头花怎么做 不准掉头标志我掉头了,会违法吗 铁道路口为什么不准掉头? mybatis的一级缓存会不会产生脏数据问题 企业战略管理的主要内容的三个方面 睡莲为什么养不开 我吹过你吹过的晚风那我们算不算相拥是什么歌 我吹过你吹过的晚风... 全面健身的浪潮已经开始,各种健身计划层出不穷,如何分辨哪种计划适合自... 哪种健身软件比较好 我高中生 曾是体育班的特招生 和体育生一起训练了... 求助:睡莲养了十个月,光长叶不开花,追肥过 泥鳅苗饲养方法 植物迅速生长的句子 描写植物的好句子_形容植物的经典句子 当叁功效与作用 请问一下,我的战网是国服的,想上美服。之前修改过一次,是可以用的... 胎盘低置可以选择顺产吗 木瓜也能千层吃怎么做 50块人民币背景颜色是棕色是假的吗 儿童平衡车不走了电源灯显示红色什么么原因? 油炸类糕点怎么做炒糖的做法 氢氧化钠固体为什么可以干燥二氧化碳 王者荣耀半肉英雄怎么出装 华为nova4没有扬声器?