写点什么

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

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

关注

评论

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

软件测试/测试开发丨Python 常用数据结构-列表

测试人

Python 程序员 软件测试 自动化测试

软件测试/测试开发丨Python 常用数据结构-元组

测试人

Python 程序员 软件测试 自动化测试 测试开发

一小时快速拆解 Milvus 2.2.9

Zilliz

非结构化数据 Milvus Zilliz 向量数据库 zillizcloud

魏可伟受邀参加 2023 开放原子全球开源峰会

KaiwuDB

KaiwuDB 2023开放原子全球开源峰会

Ubuntu安装Python

Geek_7ubdnf

WiFi7来了,WiFi6会下岗吗?

白洞计划

wifi

linux常见命令总结

Studying_swz

6 月 优质更文活动

小程序的快速渲染机制是如何实现的?

Onegun

小程序 移动应用开发 小程序容器

直播预告 | 博睿学院:AIOps利器-混沌工程实践

博睿数据

可观测性 AIOPS 智能运维 博睿数据 博睿学院

YRCloudFile 分布式存储加速基因测序 解锁生命密码

焱融科技

ICASSP 2023 | 深度窄带网络消除实时语音通信中的干扰音

阿里技术

实时语音 音频处理

ThreadLocal变量存储为什么不用Map

M

原创 ThreadLocal Java'

ChatGPT与Web的完美结合:创造一加一大于二的化学反应

加入高科技仿生人

Web 低代码 ChatGPT

不断进化!奇点云助豫园股份构建集团统一战略的数据平台

奇点云

数字化转型 奇点云 豫园股份

线性代数(一)矩阵和方程组

Studying_swz

6 月 优质更文活动

VMware虚拟机和主机传输文件

Geek_7ubdnf

Django笔记四十二之model使用validator验证器

Hunter熊

Python django model validator

C语言编程—内存管理

芯动大师

C语言 内存管理 6 月 优质更文活动

STM32单片机上RGB数据转为JPEG格式办法

DS小龙哥

6 月 优质更文活动

《OpenHarmony 共建地图 2.0》在2023开放原子全球开源峰会发布

新消费日报

SpringBoot进阶学习?看这篇就够了!

程序员小毕

程序员 程序人生 架构师 springboot java面试

AIGC繁花,绽放在精耕的算力土壤之上

脑极体

AI 服务器

更好的保护你的数据KEY

坚果

6 月 优质更文活动

Kubernetes关键组件解析

穿过生命散发芬芳

k8s 6 月 优质更文活动

平凯星辰重磅支持 2023 开放原子全球开源峰会,开源数据库分论坛成功召开

编程猫

TiDB 7.1 LTS 发版:为关键业务提供业务稳定性和多租户场景支持

PingCAP

数据库 开源 TiDB

为数据弹性而生,阿里云云原生存储再提速

阿里巴巴云原生

阿里云 Serverless 云原生 Fluid EFC

证券行业异构系统众多,微服务和网格如何全都要

网易数帆

微服务 云原生 服务网格 证券行业

不一样的ECS U实例

六月的雨在InfoQ

MySQL nginx 阿里云ECS U 6 月 优质更文活动

WiFi7来了,WiFi6会下岗吗?

脑极体

wifi

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