写点什么

版本化 JPA 实体

  • 2008-08-04
  • 本文字数:994 字

    阅读完需:约 3 分钟

Envers JBoss 的一个开源项目,最近它发布了 1.0.0 GA 版,在 Envers 的网站上这样阐述其自身的目标:> 。。。简化持久性JPA 类的版本化工作。若要对类或属性进行版本管理,只需在对应的类和属性上添加@Versioned 注解即可。对于每个版本实体,都有一张表与之相对应,这张表记录了实体所有的更改历史。这样一来,读取或查询历史数据就变得不费吹灰之力。

由于Envers 与Hibernate 及Hibernate Entity Manager 兼容,Hibernate 能运行的地方,Envers 就能运行。例如,Envers 可以独立运行,也可以在应用服务器中运行,还能与JBoss Seam 以及 Spring 协同工作。Envers 的当前版本提供的诸多特性中包括: - 对基本属性(strings, integers, longs…)的版本管理

  • 对基本属性构成的嵌入式组件的版本管理
  • 使用简单的、合成或嵌入式 id 对类进行版本管理
  • 对一对一单向或双向关联关系进行版本管理(单向关系中只针对关系主体的拥有者进行版本管理)
  • 对一对多单向或双向关联关系进行版本化(单向关系中只针对关系主体的拥有者进行版本管理)
  • 支持次级表(secondary tables)
  • 使用“修订实体(revision entity)”跟踪记录每个修订版本
  • 查询历史数据

尤其出色的是,1.0.0 GA 版对集合的变化也提供了修订版本管理,之前的预览版与 beta 版中都没有这项功能,例如: > 假设你有一个Person 实体和一个Address 实体,他们为双向多对一关系(每个人只有一个地址,几个人可以拥有相同的地址)。现在修改其中某个人的地址,那么新、旧地址所对应的persons 集合的内容就发生了变化。之前的预览版与beta 版都不会为Addresses(只针对Person)做修订版本管理,原因是数据库中的数据并没有发生变化(发生变化的是java beans 中的数据)。而现在,所有这三个实体来会有产生一个修订版本而记录在更改历史中。

如果出于某种原因需要关闭这个功能的话,只需要按下列代码修改一下配置就可以了: <property name="org.jboss.envers.revisionOnCollectionChange" value="false"></property>在未来的版本中,Envers 会支持对任何类型关联的版本管理,不再只局限于一对一或一对多。而且,它将只存储版本间差异,来达到节省空间的目的等等。Envers 是一个相当新的项目,目前尚还没引起广泛“追捧”,但它非常值得大家关注。以下资源可以帮助你进一步了解 Envers 的相关信息:

查看英文原文: Versioning JPA Entities

2008-08-04 14:45758
用户头像

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

关注

评论

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

CST的热仿真THt瞬时求解器--针式散热片

思茂信息

仿真 cst cst使用教程 CST软件 CST Studio Suite

AI进行时,AlphaGPT引领法律服务新时代

科技汇

Java集合--LinkedList源码可视化

电子尖叫食人鱼

Java

ViWizard Audio Capture for Mac:Mac 音频捕获的终极利器

晨光熹微

Yate for Mac音乐标签管理工具

晨光熹微

苹果用户你别走,用这个神器也能在你的Mac电脑上玩《双影奇境》了!

阿拉灯神丁

MacBook 双人成行 mac冒险游戏 CrossOver Mac下载 Mac游戏推荐

AI实战:一键生成数字人视频!

王磊

(问题日志)解决因代理设置导致的npm包ECONNREFUSED下载错误

timeRATE

node.js npm

软件工厂:下一代工业“看不见的流水线”

DevOps和数字孪生

软件仿真

蚂蚁开源统一多模态模型 Ming-Omni,多模态输入与生成;OpenAI 将与芭比娃娃制造商合作 AI 玩具丨日报

RTE开发者社区

鸿蒙开发实战之Universal Keystore Kit构建美颜相机金融级安全存储

yimapingchuan

HarmonyOS

ETL常见的数据转换方式

谷云科技RestCloud

MySQL 数据处理 ETL 数据转换 数据集成工具

鸿蒙开发实战之Service Collaboration Kit实现美颜相机能力开放

yimapingchuan

HarmonyOS

Pro Microphone for mac专业麦克风

晨光熹微

Volcano v1.12 正式发布!驱动云原生AI与批量计算向智能高效新阶段演进

华为云原生团队

云计算 容器 云原生 Volcano

HarmonyOS实战:List拖拽位置交换的多种实现方式

IT小码哥

harmony HarmonyOS NEXT

你了解CAS吗?有什么问题吗?如何解决?

不在线第一只蜗牛

Java Python

阿里巴巴十亿级并发系统设计:实现高并发场景下的稳定性和高性能

程序员高级码农

程序员 java 架构

JavaScript入门干货:蓝桥杯Web组分章学习笔记(基于蓝桥云课《JavaScript基础入门》)

timeRATE

JavaScript html 前端 笔记 新手

谷歌云代理 | 金融合规上云:谷歌云PCI DSS认证环境搭建指南

Cloud Ace 云一

AWS ELB 可观测性最佳实践

观测云

ELB

鸿蒙开发实战之Status Bar Extension Kit增强美颜相机状态交互

yimapingchuan

HarmonyOS

华南站最后席位|Altair 区域技术交流会报名倒计时:现场体验 Altair® HyperWorks® 2025全新版本

Altair RapidMiner

人工智能 AI 数字孪生 仿真 CAE

鸿蒙开发实战之Telephony Kit实现美颜相机通信互联

yimapingchuan

HarmonyOS NEXT

JVM 类加载过程与字节码执行深度解析

量贩潮汐·WholesaleTide

JVM

个人建站做SEO网站外链这一点需要注意,做错了可能受到Google惩罚

村头的猫

SEO 建站

智能体(AI Agent)开发实战之【LangChain】(一)接入大模型输出结果

我和AI的成长

人工智能 AI 智能体 langchain AI Agent

Java 锁升级机制详解

量贩潮汐·WholesaleTide

Java

「RTE Builder」项目寻踪!推荐项目,瓜分社区奖励~

RTE开发者社区

鸿蒙开发实战之Test Kit构建美颜相机质量保障体系

yimapingchuan

HarmonyOS NEXT

版本化JPA实体_Java_Craig Wickesser_InfoQ精选文章