使用 Spring Boot 设置 Hibernate Envers
创始人
2024-02-06 08:35:41

Hibernate Envers是一个实现持久实体的审核和版本控制的模块。审计和版本控制是构建生产级Spring 启动微服务的关键组件。Hibernate Envers与Spring Boot无缝集成以实现相同的目标。

在这篇文章中,我们将在我们的Spring Boot Starter应用程序中集成Hibernate Envers。

数据库审核对于合规性非常重要。此外,很多时候,必须分析生产问题。对于这样的分析,审计数据非常有用。

Hibernate Envers POM Dependency

将 Hibernate Envers 与 Spring Boot 一起使用的第一步是将依赖项包含在 POM 文件中。

org.hibernatehibernate-envers5.3.1.Final

为休眠实体启用审核

下一步是简单地为所需实体启用审核。这可以通过使用@Audited注释轻松完成。

@Entity
@Table(name = "vehicle")
@Audited
public class Vehicle {@Idprivate UUID id;private String vehicleIdentityNumber;private String make;private String model;private String status;public Vehicle() {}public UUID getId() {return id;}public void setId(UUID id) {this.id = id;}public String getVehicleIdentityNumber() {return vehicleIdentityNumber;}public void setVehicleIdentityNumber(String vehicleIdentityNumber) {this.vehicleIdentityNumber = vehicleIdentityNumber;}public String getMake() {return make;}public void setMake(String make) {this.make = make;}public String getModel() {return model;}public void setModel(String model) {this.model = model;}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}@Overridepublic String toString() {return "Vehicle{" +"id=" + id +", vehicleIdentityNumber='" + vehicleIdentityNumber + '\'' +", make='" + make + '\'' +", model='" + model + '\'' +", status='" + status + '\'' +'}';}
}

只需对实体类进行注释,Envers Hibernate就会为审计注册此类类。换句话说,这意味着除了主表之外,还将为此类实体创建审计表。

但是,要创建实际表,最直接的方法是使用休眠设置。这是通过使用hibernate.hbm2ddl.auto选项并将其设置为创建

此设置在应用程序属性文件中完成。

spring.datasource.url=jdbc:h2:mem:mytestdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create

请注意,休眠自动创建选项对于生产不安全。

休眠者在行动

我们可以通过启动 Spring Boot 应用程序来查看休眠审核日志记录的运行情况。应用程序启动后,我们可以访问h2控制台

这到底是怎么回事呢?

如您所见,我们有预期的车辆表。除此之外,我们还有一个名为VEHICLE_AUD的新表。审核表包含原始表中的所有字段。

但是,还添加了两个新字段。首先是 REVTYPE 字段。其中包含“0”表示添加,“1”表示更新,“2”表示删除。另一个字段是 REV 字段。

生成另一个表。它被称为REVINFO。它包含两个字段REVREVTSTMPVEHICLE_AUD中的 REV字段基本上是REVINFO表中REV字段的外键。REVINFO表跟踪每个事务。

休眠者在行动

为了测试Hibernate Envers和审计日志记录,我们可以使用我们的载具端点触发一些事务。

当我们使用 POST 操作之类的操作创建新记录,然后使用 PUT 操作对其进行更新时,我们会在 VEHICLE_AUD 表中得到两条记录。

如您所见,ID 是c7a2ac1750fd4e12877efc76b3743646。

有两条记录具有此 ID。一个的 REVTYPE 为 0(创建),而另一个的 REVTYPE 为 1(更新)。

REVINFO表跟踪所有修订。如果您仔细观察,VEHICLE_AUD表中的REV字段是REVINFO表中REV字段的外键。

结论

Hibernate Envers是一个非常强大的解决方案,可以满足Spring应用程序中的审计日志记录需求。

它也与Spring Boot无缝契合。这允许为Spring 引导微服务启用休眠审核日志记录。只需使用注释并将依赖项包含在 POM 文件中,即可轻松设置它。

这篇文章的代码现在可以在Github上找到。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...