【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

版本化 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:45546
用户头像

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

关注

评论

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

从商业增长到自然增长,OPPO广告联盟为开发者开辟增长新路径

Geek_2d6073

【Linux 基础入门 + Java项目部署】

百度搜索:蓝易云

Java 云计算 Linux 运维 云服务器

助力开发者健康长效增长 OPPO 开启应用和服务生态新篇章

Geek_2d6073

故障发现、定位提效超70%,去哪儿可观测体系做了哪些优化?

TakinTalks稳定性社区

本地MQTT协议消息服务远程连接教程介绍

EquatorCoco

Linux 本地化 mqtt 协议解析

巴适得板!这次我们和四川一起加“数”前行!

天翼云开发者社区

云计算 大数据

欢迎提报 | 2023年龙蜥社区优秀贡献者评选正式启动

OpenAnolis小助手

开源 操作系统 龙蜥社区 最佳案例 突出贡献

华秋这场技术研讨邀请了哪些重磅嘉宾?

华秋电子

外包的鄙视链,背后原因是什么

老张

外包 竞争力 核心竞争力

赛车竞速游戏:art of rally拉力赛车 for Mac 1.5.0中文版

繁星

赛车竞速游戏 Art of Rally

使用 PPO 算法进行 RLHF 的 N 步实现细节

EquatorCoco

算法 ppo算法

LED显示屏防护等级知识讲解

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家 等级

Apache环境php安装扩展swoole。

百度搜索:蓝易云

Apache 云计算 Linux swoole 云服务器

体验函数计算 FC 3.0,写测评赢取索尼头戴式耳机

Serverless Devs

云计算 Serverless AIGC

Gitlab配置mirrorRepository 镜像仓库

javaNice

Java gitlab

万界星空科技云MES管理系统和ERP的对接

万界星空科技

数字化转型 mes 云mes 万界星空科技 万界星空科技mes

如何搞砸一场面试?

王磊

Java 面试

微信团队分享:详解iOS版微信视频号直播中因帧率异常导致的功耗问题

JackJiang

网络编程 即时通讯 IM

StoneDB顺利通过中科院软件所 2023 开源之夏 结项审核

StoneDB

MySQL 数据库 HTAP StoneDB

苹果Mac动态壁纸:Dynamic Wallpaper 16.7中文版

繁星

动态壁纸 Dynamic Wallpaper

精彩回顾|从架构到实践,AntDB融合型数据库揭秘

亚信AntDB数据库

数据库 AntDB AntDB数据库

更快更省更好用!天翼云云原生一体机iStack打通物云最后一公里!

Geek_2d6073

为何选择独立服务器?稳定、高效、安全等优势一览

一只扑棱蛾子

独立服务器

CodeWhisperer--手把手教你使用一个十分强大的工具

亚马逊云科技 (Amazon Web Services)

Python 人工智能 云上探索实验室 Amazon CodeWhisperer Amazon Cloud9

任福继院士:基于交叉学科的研究将成主流,算力平台和计算人才是自主创新关键

Geek_2d6073

代码混淆的原理是什么?常见代码混淆方法介绍

雪奈椰子

来文心中国行厦门站,感受大模型落地生花的进展!

飞桨PaddlePaddle

文心一言 文心中国行

一张图厘清各大操作系统的发展脉络

巫山老妖

平凯星辰 TiDB 获评 “2023 中国金融科技守正创新扬帆计划” 十佳优秀实践奖

编程猫

KiCon Asia 2023完美落幕,助力Kicad生态繁荣,华秋在行动

华秋电子

kicad

华为云GaussDB助力工商银行、华夏银行斩获“十佳卓越实践奖”

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

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