成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

Spring Data JPA的Audit功能審計數(shù)據(jù)庫的變更

瀏覽:66日期:2023-07-06 09:31:03
目錄1 數(shù)據(jù)庫審計2 Spring Data JPA審計2.1 項目準備2.2 創(chuàng)建實體父類2.3 如何獲取名字2.4 測試3 總結(jié)

我最新最全的文章都在 南瓜慢說 www.pkslow.com ,歡迎大家來喝茶!

1 數(shù)據(jù)庫審計

數(shù)據(jù)庫審計是指當數(shù)據(jù)庫有記錄變更時,可以記錄數(shù)據(jù)庫的變更時間和變更人等,這樣以后出問題回溯問責也比較方便。對于審計表記錄的變更可以兩種方式,一種是建立一張審計表專門用于記錄,另一種是在數(shù)據(jù)庫增加字段。本文所討論的是第二種方案。

那如何在新增、修改、刪除的時候同時增加記錄呢?如果每張表都單獨記錄,代碼就會顯得很冗余。更好的方式應(yīng)該是做切面或者事件監(jiān)聽,當數(shù)據(jù)有變更時統(tǒng)一進行記錄。

2 Spring Data JPA審計

Spring Data JPA為我們提供了方便的Audit功能,通過四個注解來標記字段:

(1) @CreatedBy: 創(chuàng)建人

(2) @CreatedDate: 創(chuàng)建時間

(3) @LastModifiedBy: 最后修改人

(4) @LastModifiedDate: 最后修改時間

接下來我們來看看怎么使用。

2.1 項目準備

通過Docker啟動PostgreSQL數(shù)據(jù)庫:

docker run -itd --name pkslow-postgres -e POSTGRES_DB=pkslow -e POSTGRES_USER=pkslow -e POSTGRES_PASSWORD=pkslow -e PGDATA=/var/lib/postgresql/data/pgdata -p 5432:5432 postgres:10

引入相關(guān)依賴:

<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.postgresql</groupId> <artifactId>postgresql</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>

Spring Security不是必須的,這里使用它來獲取用戶名。配置的用戶為:

spring.security.user.name=pkslowspring.security.user.password=1234562.2 創(chuàng)建實體父類

其實父類不是必須的,你可以在每個想Audit的實體類進行配置,但比較麻煩,不如創(chuàng)建一個父類,再讓想審計的子類都繼承它:

@MappedSuperclass@EntityListeners(AuditingEntityListener.class)public class Auditable<U> { @CreatedBy @Column(name = 'created_by') private U createdBy; @CreatedDate @Column(name = 'created_date') private Date createdDate; @LastModifiedBy @Column(name = 'last_modified_by') private U lastModifiedBy; @LastModifiedDate @Column(name = 'last_modified_date') private Date lastModifiedDate; // getter //setter}

@MappedSuperclass可以讓其它子實體類繼承相關(guān)的字段和屬性;

@EntityListeners設(shè)置監(jiān)聽類,會對新增和修改進行回調(diào)處理。

有了父類之后,子類就簡單了:

@Entity@Table(name = 'pkslow_users')public class User extends Auditable<String> { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long userId; private String name; private String email; private String country; private String website; //getter setter}2.3 如何獲取名字

數(shù)據(jù)總是被修改的,我們要提供一個獲取修改人名字的接口,配置如下:

@Configuration@EnableJpaAuditing(auditorAwareRef = 'auditorProvider')public class JpaAuditingConfiguration { @Bean public AuditorAware<String> auditorProvider() {return () -> { String username = 'system'; SecurityContext context = SecurityContextHolder.getContext(); if (context != null) {Authentication authentication = context.getAuthentication();if (authentication != null) { username = authentication.getName();} } String result = username; return Optional.ofNullable(result);}; }}

這里配置的是通過Spring Security的Context來獲取登陸用戶的名字,當然可以有其它方案,如獲取請求頭的某個字段等。

注意注解@EnableJpaAuditing開啟了審計功能。

2.4 測試

我們通過一個Controller來新增數(shù)據(jù),看看會有什么效果:

@RestController@RequestMapping('/user')public class UserController { @Autowired private UserRepository userRepository; @PostMapping public User save(@RequestBody User user) {return userRepository.save(user); }}

通過curl命令來測試如下:

$ curl ’http://localhost:8088/user’ -X POST > -H ’Content-Type: application/json’ > -H ’Authorization:Basic cGtzbG93OjEyMzQ1Ng==’ > -d ’{> 'name':'larry',> 'email':'admin@pkslow.com',> 'country':'China',> 'website':'www.pkslow.com'> }’{'createdBy':'pkslow','createdDate':'2021-01-15T15:08:47.035+0000','lastModifiedBy':'pkslow','lastModifiedDate':'2021-01-15T15:08:47.035+0000','userId':7,'name':'larry','email':'admin@pkslow.com','country':'China','website':www.pkslow.com}

查看數(shù)據(jù)庫,已經(jīng)生成了審計記錄:

Spring Data JPA的Audit功能審計數(shù)據(jù)庫的變更

3 總結(jié)

代碼請查看:https://github.com/LarryDpk/pkslow-samples

到此這篇關(guān)于Spring Data JPA的Audit功能審計數(shù)據(jù)庫的變更的文章就介紹到這了,更多相關(guān)Spring Data JPA審計數(shù)據(jù)庫變更內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产日韩在线不卡| 日韩午夜小视频| 欧美日韩国产高清一区二区三区| 一区二区三区日韩在线观看| 欧美在线日韩| 日韩精品一区在线| 国产一区二区三区免费在线观看| 久久中文在线| 亚洲综合男人的天堂| 国内激情久久| 中文字幕乱码亚洲精品一区| 成人成人成人在线视频| 欧美精品久久99久久在免费线| 三级在线观看一区二区 | www国产精品av| 顶级嫩模精品视频在线看| 精品视频一区 二区 三区| 午夜激情一区二区三区| 在线亚洲自拍| 亚洲精品亚洲人成人网| 亚洲精品乱码视频| 亚洲欧美激情小说另类| 伊人久久婷婷色综合98网| 欧美国产综合色视频| 欧美一区免费视频| 国产无一区二区| 91捆绑美女网站| 久久午夜老司机| av电影一区二区| 久久久久久日产精品| 94-欧美-setu| 国产日韩av一区| 欧美另类一区| 中文字幕日韩av资源站| 极品尤物久久久av免费看| 亚洲欧美日韩一区二区| 午夜在线播放视频欧美| 亚洲成人综合在线| 久久伊人一区二区| 亚洲三级在线看| 欧美大片一区| 日韩一区二区影院| 国产91精品一区二区麻豆亚洲| 日韩一区二区三区av| 国产成人午夜精品影院观看视频| 日韩欧美一区在线观看| 韩日欧美一区| 亚洲人人精品| 一区二区三区.www| 久久精品中文| 九色porny丨国产精品| 在线观看91精品国产麻豆| 国产美女在线精品| 精品成人佐山爱一区二区| 午夜精品久久久久99热蜜桃导演 | 亚洲欧美区自拍先锋| 亚洲最黄网站| 视频一区欧美精品| 欧美精选在线播放| 北条麻妃一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 国产亚洲毛片在线| 日韩av一级片| 制服视频三区第一页精品| jlzzjlzz国产精品久久| 亚洲欧美一区二区不卡| 色噜噜久久综合| 成人一级黄色片| 国产精品电影一区二区| 久久电影一区| 国产专区综合网| 亚洲精品在线观| 亚洲国产精选| 青草国产精品久久久久久| 欧美电视剧在线看免费| 欧美先锋影音| 亚洲九九爱视频| 91久久香蕉国产日韩欧美9色| 激情久久五月天| 久久蜜桃av一区精品变态类天堂 | 中文字幕一区二区三区色视频| 中文日韩欧美| 美日韩一级片在线观看| 日韩免费高清电影| 亚洲伦伦在线| 国内精品国产成人国产三级粉色 | 一区二区三区高清视频在线观看| 久色婷婷小香蕉久久| 欧美成人a∨高清免费观看| 欧美午夜精品| 麻豆中文一区二区| 亚洲精品一区二区三区四区高清| 日韩午夜免费视频| 极品美女销魂一区二区三区免费| 国产亚洲精品aa午夜观看| 欧美亚洲专区| 国产成+人+日韩+欧美+亚洲| 亚洲婷婷综合色高清在线| 欧美在线观看视频在线| 欧美一区高清| 奇米影视在线99精品| 国产欧美一区二区在线| 色婷婷精品久久二区二区蜜臂av| 91小宝寻花一区二区三区| 亚洲午夜激情网页| 亚洲精品一区二区三区影院 | 乱人伦精品视频在线观看| 高清视频一区二区| 亚洲欧美日韩国产综合| 在线播放欧美女士性生活| 一区二区亚洲| 久久99国内精品| 18欧美亚洲精品| 4438x成人网最大色成网站| 亚洲国产美女| 国产伦精品一区二区三区免费迷| 亚洲天堂av老司机| 欧美一卡二卡在线观看| 国产一区二区三区久久久久久久久| 国产99久久久精品| 午夜精品免费在线| 国产情人综合久久777777| 欧美在线小视频| 99xxxx成人网| bt欧美亚洲午夜电影天堂| 日韩精品欧美精品| 综合欧美一区二区三区| 欧美成人a在线| 欧美日韩另类一区| 伊伊综合在线| 国产精品夜夜嗨| 午夜国产精品影院在线观看| 亚洲国产成人私人影院tom| 欧美浪妇xxxx高跟鞋交| 国产精品推荐精品| 色综合中文综合网| 丁香啪啪综合成人亚洲小说| 午夜一区二区三区视频| 中文字幕乱码日本亚洲一区二区 | 91亚洲大成网污www| 国产在线视频不卡二| 亚洲已满18点击进入久久| 久久久99精品久久| 欧美男人的天堂一二区| 亚洲免费婷婷| 欧美日韩在线一二三| 丰满少妇久久久久久久| 六月丁香综合在线视频| 亚洲资源中文字幕| 国产三级三级三级精品8ⅰ区| 91精品国产色综合久久不卡蜜臀| 免费久久99精品国产自在现线| 国产一区二区无遮挡| 成人app网站| 精品一区二区三区免费视频| 午夜视频一区二区| 亚洲理论在线观看| 国产欧美日韩视频在线观看| 日韩视频国产视频| 欧美精品一二三| 欧美视频在线不卡| 色婷婷av一区二区三区大白胸| 国产精品久久九九| 亚洲二区免费| 欧美精品二区三区四区免费看视频| 成年人网站91| 成人午夜激情影院| 国产盗摄女厕一区二区三区| 国产自产2019最新不卡| 裸体一区二区三区| 日本不卡高清视频| 午夜不卡在线视频| 亚洲图片自拍偷拍| 一区二区三区中文免费| 最新日韩在线视频| 国产精品九色蝌蚪自拍| 欧美激情在线免费观看| 国产色婷婷亚洲99精品小说| 久久久久88色偷偷免费| 精品处破学生在线二十三| 精品国产免费一区二区三区香蕉| 日韩一区二区三区在线观看 | 欧美日韩dvd在线观看| 欧洲精品视频在线观看| 久久婷婷激情| 免费在线一区二区| 久久精品欧洲| 91高清视频免费看| 在线观看视频一区| 欧美三级日韩三级| 7777精品伊人久久久大香线蕉完整版 | 国产91富婆露脸刺激对白| 国产成人99久久亚洲综合精品| 国产.欧美.日韩| av电影天堂一区二区在线观看| 色综合网色综合| 韩日欧美一区| 亚洲综合国产| 欧美亚洲免费在线一区| 欧美午夜精品免费|