电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Springboot hibernate envers使用過程詳解

瀏覽:82日期:2023-05-09 14:32:28

添加maven配置

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> </parent> <artifactId>springboot-envers</artifactId> <name>springboot-envers</name> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-envers</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> </dependencies></project>

使用User類作為被審計的對象

@Entity@Table(name = 'user')@Audited@JsonIgnoreProperties(value = 'hibernateLazyInitializer')public class User { @Id @GeneratedValue private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}

添加配置

spring.jpa.hibernate.ddl-auto=createspring.jpa.properties.org.hibernate.envers.audit_strategy=org.hibernate.envers.strategy.internal.ValidityAuditStrategyspring.jpa.properties.org.hibernate.envers.audit_strategy_validity_store_revend_timestamp=truespring.h2.console.enabled=truespring.h2.console.path=/h2spring.datasource.url=jdbc:h2:mem:enversspring.datasource.username=saspring.datasource.password=saspring.datasource.driverClassName=org.h2.Driver

創(chuàng)建相應(yīng)的UserRepository

@Repositorypublic interface UserRepository extends JpaRepository<User, Long> {}

添加用于增刪改的Controller

@Controllerpublic class UserController { @Autowired private UserRepository userRepository; private int counter; @ResponseBody @RequestMapping('/user/add') public Object add() { User user = new User(); user.setName('name' + ++counter); userRepository.save(user); return user; } @ResponseBody @RequestMapping('/user/update/{id}') public Object update(@PathVariable Long id) { User user = userRepository.getOne(id); user.setName('name' + ++counter); userRepository.save(user); return user; } @ResponseBody @RequestMapping('/user/delete/{id}') public Object delete(@PathVariable Long id) { User user = userRepository.getOne(id); userRepository.delete(user); return user; }}

添加啟動類

@SpringBootApplicationpublic class SpringbootEnversApplication { public static void main(String[] args) { SpringApplication.run(SpringbootEnversApplication.class, args); }}

運行程序后,訪問http://localhost:8080/h2,輸入密碼sa,即可登陸數(shù)據(jù)庫并查詢數(shù)據(jù)

由于配置了spring.jpa.hibernate.ddl-auto=create,可以看到系統(tǒng)已經(jīng)為我們生成了相關(guān)的數(shù)據(jù)表

Springboot hibernate envers使用過程詳解

其中USER是實體類的表,USER_AUD是對應(yīng)的審計表

依次訪問以下鏈接,增加兩條數(shù)據(jù),分別對兩條數(shù)據(jù)進行更新,再刪除第一條數(shù)據(jù)

http://localhost:8080/user/add

http://localhost:8080/user/add

http://localhost:8080/user/update/1

http://localhost:8080/user/update/2

http://localhost:8080/user/delete/1

在h2頁面查詢USER表

Springboot hibernate envers使用過程詳解

可以看到,USER表只有第二條數(shù)據(jù)更新后的記錄了

而查詢USER_AUD表

Springboot hibernate envers使用過程詳解

可以看到表中存在5條記錄,分別對應(yīng)著上面的五次操作

其中ID是USER表的主鍵,REV是USER_AUD的主鍵,REVTYPE是操作類型,0新增,1更新,2刪除,name則是對應(yīng)USER的name屬性

hibernate提供了兩種審計策略,分別是

org.hibernate.envers.strategy.internal.DefaultAuditStrategy org.hibernate.envers.strategy.internal.ValidityAuditStrategy

如果使用DefaultAuditStrategy,USER_AUD表中不會有REVEND,REVEND_TSTMP兩個字段,只會單純的記錄變更與版本

而使用ValidityAuditStrategy,在新增一條變更記錄時,會更新上一條變更記錄的REVEND,REVEND_TSTMP為當前的版本號以及變更時間

因為ValidityAuditStrategy除了插入新紀錄還要更新舊的記錄,所以插入速度會慢一點,但是因為提供了額外的信息,對于數(shù)據(jù)查詢,速度則較DefaultAuditStrategy更快一些

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 档案密集柜_手动密集柜_智能密集柜_内蒙古档案密集柜-盛隆柜业内蒙古密集柜直销中心 | 长城人品牌官网 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 北京网站建设-企业网站建设-建站公司-做网站-北京良言多米网络公司 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 菲希尔X射线测厚仪-菲希尔库伦法测厚仪-无锡骏展仪器有限责任公司 | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 数码管_LED贴片灯_LED数码管厂家-无锡市冠卓电子科技有限公司 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 庭院灯_太阳能景观灯_草坪灯厂家_仿古壁灯-重庆恒投科技 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 高温高压釜(氢化反应釜)百科| 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 碳刷_刷握_集电环_恒压簧_电刷厂家-上海丹臻机电科技有限公司 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 打造全球沸石生态圈 - 国投盛世 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 全自动真空上料机_粉末真空上料机_气动真空上料机-南京奥威环保科技设备有限公司 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 上海办公室装修,办公楼装修设计,办公空间设计,企业展厅设计_写艺装饰公司 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 活性炭-果壳木质煤质柱状粉状蜂窝活性炭厂家价格多少钱 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 馋嘴餐饮网_餐饮加盟店火爆好项目_餐饮连锁品牌加盟指南创业平台 | 济南拼接屏_山东液晶拼接屏_济南LED显示屏—维康国际官网 |