写点什么

Hibernate 3.3:重新设计、模块化 JARS 及重构的缓存系统

  • 2008-08-25
  • 本文字数:1809 字

    阅读完需:约 6 分钟

Hibernate 3.3 主要的新特性包括:

  • 重新设计、模块化 JARs——现在有很多定义良好的 JARs,而不是一个大的 JAR 文件——这使得用户可以轻松了解依赖关系并将其最小化,同时还使得组织可以定制 Hibernate,移除不需要的部分
  • 基于 Maven 的构建——现在 Hibernate 使用 Apache Maven 构建系统进行构建
  • 修补的缓存 SPI——根据反馈重构了缓存系统以对不同的缓存区域的特性进行精细控制
  • JBoss Cache 2.x集成——基于新的缓存 SPI,现在可以轻松集成 JBoss Cache 2.x

Ebersole 还详细说明了新的缓存系统和 JBoss Cache 集成:

SPI 的主要变化围绕着如何在特定目的下构建缓存区域而展开。基本上 Hibernate 需要缓存区域完成四个不同的目的: 实体数据、集合数据、查询结果及时间戳更新。以前的 SPI 试图以单一方式处理这些不同类型数据;本质上它试图以普遍的方式来对待数据缓存而不管所存储数据 的特性。但是在实践中我们发现很多时候缓存集成器需要考虑到那些不同特性。例如在集群缓存中,让实体和集合数据及查询和时间戳更新区域同时失效或许很有意 义。如果不基于区域名称采取一些手段的话,以前的 SPI 是不可能处理这种混合匹配的。新的 SPI 使这些区别变得清晰明了。例如有一个叫做 “buildEntityRegion”或者“buildCollectionRegion”的方法,那么缓存集成器就可以确定特定区域的数据类型是可以持有并构建一个恰当的配置好的缓存 / 区域的。

JBossCache 2.x 集成现在是直接使用新的 SPI 的唯一的缓存集成(其余的使用了连接新式和旧式 SPI 的桥,现在已不建议使用了)。同样,它充分利用了我上面提到的那 些区别以使得用户可以为不同区域定义不同行为。JBossCache 2.x 相对于 JBossCache 1.x 来说有两个具体的改进有助于 Hibernate 的使用。第一个是增加了“putForExternalRead”过程。当使用 JBossCache 1.x,我们在从数据库读取数据并将其放到 JBossCache 区域中,有时会遇到性能问题,甚至还会发生死锁。情况是这样的:当我们尝试将只读数据放到 节点上时,JBossCache 需要一个写锁,尽管整体操作的语义需要的是一个读锁。然后该写锁阻塞了其他事务。JBossCache 2.x 引入了一个针对该用例而特别设计的方法,集成时就使用了该方法。

从使用 Hibernate 的角度来看 JBossCache 2.x 中其他重要的改进就是它使用乐观锁更好地管理集群中无效的节点。最大的改变就是有一个“碑石(tombstone)”来检查无效的实体,这样后面如 果尝试往缓存中的该实体进行写入操作时就会知道无效的版本是什么并且还会执行一个恰当的版本检验。对于 Hibernate 来说无效是非常重要的,因为这是 最有效的运行集群实体缓存的方式。

讨论的另一个话题就是其他 JPA 实现如何影响 Hibernate:

当我第一次看到 TopLink/OpenJPA 时,我正好在做 Hibernate 中的 BytecodeProvider 支持工作。我真的喜欢在类加载时就使用 JVM 代理来动态处理类,而不是在一个单独的构建步骤中进行。Hibernate 并没有采取这种方式,但是我打算在 Hibernate 4.0 中尝试一下,因为那时 Hibernate 就不再支持 JDK 1.4 了。

最近随着 OSGi 的日渐流行,曾被提及的一个问题就是当在 OSGi 容器中运行 Hibernate 时,

有时会出现问题。Ebersole 说他们现在正在检查动态重新定义SessionFactory 的功能,同时他们也知道了一些类加载的问题。但是Ebersole 注意到hibernate-dev 邮件列表上并没有人讨论这些问题,而且也

只有几个 JIRA 对这些问题进行了探讨,同时他还注意到就他所知,在 Hibernate 开发团队中还没有人解决了这些问题。Ebersole 强烈地表达了他想与社区协作的 愿望,以期解决这些问题以及 Hibernate 中的其他任何问题,他还说如果有人对 OSGi 感兴趣或者对其比较了解并且想提升 Hibernate 与 OSGi 的协作性,或者仅仅提出实现这些兼容性的一些建议,他很愿意听取大家的意见。

当被问到 Hibernate 的未来计划时,Ebersole 说到:

既然 3.3.0 GA 已经发布了,我们会有一段时间来解决 JIRA 中提出的关于 3.3.x 的一些问题。我们已经在制定关于 3.4 和 4.0 的计划。一般而言,我们还没有真正讨论过未来的路线图,但是因为 3.4 上的工作已经开始并且其特性集基本上也已确定,我很 乐意多说一些。我们将精力集中于性能改进和资源利用以及使 Hibernate 运行在集群的故障恢复场景中。另外要说的就是“抓取分析(fetch profiles)”的引入,这样你就可以在元数据中建立命名的抓取策略然后在运行时动态应用 Session 上的那些分析。对于 3.4 来说这些都是大问 题。

2008-08-25 04:381052
用户头像

发布了 88 篇内容, 共 273.8 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

一文读懂AQS的前世今生

是月月啊2023

Java 面试题

2023 Flink Forward Asia 参会指南来啦!

Apache Flink

大数据 flink

Native Drawing开发指导,实现HarmonyOS基本图形和字体的绘制

HarmonyOS开发者

HarmonyOS

喜报!MIAOYUN入选成都高新区“瞪羚企业”

MIAOYUN

云计算 MIAOYUN 瞪羚企业 成都高新梯度培育企业 企业资质

14 | 排序优化:如何实现一个通用的、高性能的排序函数.md

鲁米

面试问题总结(一)

xfgg

Java

写作训练营打卡1--最喜欢的极客时间作者

Avril

ERP和MES的区别与联系,这篇接地气的文章终于讲明白了!

优秀

MES系统 mes ERP系统 mes和erp区别

Amazon WorkSpaces 现在提供使用 WorkSpaces 流协议(WSP)的 Web Access

亚马逊云科技 (Amazon Web Services)

Amazon WorkSpaces

耗时三年开源的H5商城,强烈推荐

越长大越悲伤

Java 开源 springboot

GPU在元宇宙中的作用—元宇宙云端解决方案

3DCAT实时渲染

元宇宙 实时渲染

多邻国还是流利说

escray

技术人写作 21 天技术人写作行动营 21 天

使用 Kubernetes Agent Server 实现 GitOps

极狐GitLab

Kubernetes DevOps gitlab gitops workflow

JDK1.8 ConcurrentHashMap 核心源码(面试重点)

是月月啊2023

跨界-我今年最难的一件事

学渣汪在央企打怪升级

英特尔李映:开源开放是软件生态开拓进取的原动力

E科讯

Amazon WorkSpaces 推出 Amazon WorkSpaces Web

亚马逊云科技 (Amazon Web Services)

容器 Amazon WorkSpaces

SQL ALTER TABLE 语句- 灵活修改表结构和数据类型

小万哥

MySQL 数据库 sql 程序员 后端开发

wing一款轻量快捷的团队开发工具

iofomo

Python 跨平台 开发工具

“敏捷教练进阶课程”2024年1月27-28日 · A-CSM认证在线周末班【分时段模块化教学】CST导师亲授

ShineScrum

敏捷教练

【EMNLP 2023】面向Stable Diffusion的自动Prompt工程算法BeautifulPrompt

阿里云大数据AI技术

从ByteHouse网关,看如何进一步提升OLAP引擎性能

字节跳动数据平台

数据库 大数据 云原生 数仓 企业号12月PK榜

Groovy StringBuilder类踩坑

FunTester

🎉开发者的福音:TinyVue 组件库文档大优化!类型更详细,描述更清晰!

Kagol

开源 Vue 前端 UI组件库

另一种学习 Linux kernel 的方式 —— UML

袁世超

UML Linux Kenel

[译]你需要知道的CSS属性isolation

南城FE

CSS 前端 布局

一文让你知道企业真正需要一个怎样的远程协同运维平台?

行云管家

运维 远程运维 远程协同

服务器异常问题排查指南

AiDaddy

trouble shooting 线上问题排查 服务器异常排查 linux 命令

我的2023年度关键词:迎接不一样的挑战,充实自我

芯动大师

#技术人的2023总结

【Android】深入Binder拦截

iofomo

android 拦截器 binder

Wireshark中的TCP协议包分析

小齐写代码

Hibernate 3.3:重新设计、模块化JARS及重构的缓存系统_Java_Ryan Slobojan_InfoQ精选文章