写点什么

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:381041
用户头像

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

关注

评论

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

你的竞争对手都在用国外社交媒体监控工具获取什么?揭秘他们的监控策略

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

Jackson 序列化的隐性成本

程序猿DD

区块链 Web3 系统的开发难点

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

Docker磁盘满了?这样清理高效又安全

王中阳Go

Docker

亚马逊商品列表API秘籍!轻松获取商品列表数据

Datafox(数据狐)

亚马逊API 亚马逊商品数据采集 亚马商品列表API

观测云产品更新 | 监控、场景图表、查看器、管理、LLM 监测等

观测云

产品迭代

7大国外社交媒体监控平台功能全对比

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

RFID标签在高温环境下的可靠性测试方法

斯科信息

RFID技术 RFID标签

市场声量即战场:如何用国外社交媒体监控软件打赢品牌曝光战役?

沃观Wovision

舆情监测 社媒监测 舆情监测系统 社交媒体监控 海外社交媒体监控

“多模态文本智能技术”:让AI真正读懂文档

herosunly

人工智能

构建前瞻性的AI战略,助力企业数字财务发展

智达方通

全面预算管理 财务管理

AI人工智能体综合应用平台:架构解析与行业实践

上海拔俗

火山引擎推出Data Agent评测体系,并发布《2025数据智能体实践指南》

字节跳动数据平台

AI赋能人工协同评估系统:当人类智慧遇见机器效率

上海拔俗

AI常态化教研系统:用技术赋能教师日常教学与专业成长

上海拔俗

火山引擎发布新产品用户研究Agent,并推出数据智能体评测体系

字节跳动数据平台

苏宁商品详情API秘籍!轻松获取商品详情数据

Datafox(数据狐)

苏宁商品数据采集 苏宁API 苏宁商品详情API

跨境卖家必看:利用国外社交媒体监控服务选品与营销指南

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

营销人必备:海外社媒监控系统让你的内容策略精准十倍

沃观Wovision

舆情监控 舆情监测 海外舆情监测 社交媒体监控 海外社交媒体监控

TDengine TSDB 3.3.8.0 上线:SMA、TLS、TDgpt、taosX、taosgen 一次全进化

TDengine

tdengine 时序数据库

ChatGPT如何实现聊天一样的实时交互?快速读懂SSE实时“推”技术

JackJiang

网络编程 即时通讯 IM

Karmada 用户组再迎新成员,Scatter Lab 正式加入!

华为云原生团队

云计算 容器 云原生 Karmada

得物携手火山引擎,打造财务场景数智升级新范式

科技新消息

AI数据处理和质量测评系统:给AI喂“干净粮食”的智能厨师

上海拔俗

区块链 Web3 项目的开发

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

新品发布必做:通过海外社媒监控系统预判市场反应与优化发布策略

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

行业趋势早知道:利用国外社交媒体监控网站发现商机

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

海外客户心声直达:将海外社交媒体监控系统变为你的免费产品研发中心

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

从 “被动耗能” 到 “主动管控”:MyEMS 如何重构企业能源管理逻辑?

开源能源管理系统

开源 开源能源管理系统

行业分享丨AI+仿真如何重塑设计研发价值?

Altair RapidMiner

AI 汽车 仿真 CAE 设计仿真

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