现场实操破解开发瓶颈,「2023 百度云智大会·智算大会 开发者沙龙」不容错过! 了解详情
写点什么

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

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

关注

评论

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

led显示屏升级这些技术才能更节能

Dylan

广告 LED LED显示屏

提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇(二))

京东科技开发者

人工智能 运维 AIOPS 时间序列 企业号 2 月 PK 榜

EMQX Cloud Serverless正式上线:实现三秒部署的MQTT Serverless云服务

EMQ映云科技

物联网 IoT mqtt emqx 企业号 2 月 PK 榜

前端工程师leetcode算法面试必备-二分搜索算法(中)

js2030code

JavaScript LeetCode

你知道2023年堡垒机报价是多少吗?谁能回答!

行云管家

网络安全 等保 堡垒机 等级保护

flutter系列之:使用SliverList和SliverGird

程序那些事

flutter 架构 大前端 程序那些事

好用的研发管理看板工具有哪些?10款主流看板管理软件盘点

PingCode

项目管理 产品经理 管理软件

业务流程将因生成式AI变革,ChatGPT引领的AIGC正在改变组织运营

王吉伟频道

人工智能 业务流程优化 AIGC ChatGPT 生成式AI

在中国程序员工作是青春饭吗?

小小怪下士

Java 程序员 面试

一图读懂 | 2023年中国产业数字化十大趋势

易观分析

数字经济 产业数字化

Java高手速成 | 对象-关系的映射、映射对象标识符与JPA API的级联操作

TiAmo

Java jpa API 编排

全栈角度看分页处理

京东科技开发者

数据库 前端 Web 开发 框架

​网易游戏实时 HTAP 计费风控平台建设

PingCAP

TiDB

DAPP智能合约开发链上技术

薇電13242772558

智能合约

StarRocks技术内幕 | 资源隔离原理解析

StarRocks

数据库 开源 资源隔离

促进关键软件高层次人才培养:平凯星辰与华东师范大学签订联合博士培养合作协议

PingCAP

教育

0源码基础学习Spring源码系列(一)——Bean注入流程

京东科技开发者

spring 开源 后端

聚焦能碳数智化 百度智能云度能亮相2022世界物联网大会

Geek_2d6073

Apifox 自动化测试新增流程控制条件,复杂测试场景不再是问题!

Apifox

测试 测试工具 程序员‘ 测试管理工具

新思科技点拨DevSecOps安全“左移”的9大要点

InfoQ_434670063458

DevSecOps 软件安全 安全左移

【从零开始学爬虫】采集全球海关进出口新闻数据

前嗅大数据

大数据 爬虫 海关

GaussDB(DWS)迁移:一种执行高效的TereData的marco迁移方案

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

NFT艺术品代币如何进行赋能?系统开发定制

开发微hkkf5566

前端工程师leetcode算法面试必备-二分搜索算法(下)

js2030code

JavaScript LeetCode

实现订单到期未支付自动关闭不会写?这6种方案任你挑选

程序员拾山

Java 技术方案 关闭订单

MASA Stack 1.0 发布会讲稿——生态篇

MASA技术团队

.net 开源 MASA MASA Stack

2023年中国数字化活动行业专题报告

易观分析

数字经济 产业数字化

无锡正规等级测评公司有几家?分别叫什么?

行云管家

等保 堡垒机 网路安全 等级保护 无锡

盘点导致sql执行速度慢的几种情况,都是生产环境踩过的坑

程序员拾山

MySQL

直播预告 | 对谈谷歌云 DORA 布道师:聊聊最关键的四个 DevOps 表现指标

思码逸研发效能

DevOps

ToB软件遇上ChatGPT,没有天翻地覆

ToB行业头条

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