我需要審計我的一些數據庫表上的所有更改。例如,對於給定的員工,我需要知道所有地址以及該字段被修改的日期。其實我使用Spring Data,Hibernate和JPA。一個好的選擇是使用休眠Envers,但問題是我無法使用Spring Data獲取歷史記錄。另一種選擇是創建一個Employee_history表,但我沒有辦法從兩個不同的表中獲取Employee記錄(我想在Employee表中插入,但從Employee和Employee_history中獲取數據)。有沒有其他方法可以實現這一點?審計數據庫記錄隨着Spring數據的變化
回答
您必須回答的第一個問題應該是您需要的審覈級別。是一個簡單的更改列表足夠了嗎?字符串表示是否足夠好?或者你是否希望能夠支持你的實體的修訂,在那裏你可以返回並獲取修訂版X的數據「沒有任何麻煩」?
如果更改的列表足夠了,並且您仍然使用休眠模式,那麼我會選擇HibernateEventListener
(而不是JPA),因爲您已經獲得了postevents中的所有更改。無需自己創建三角洲。
另一方面,Envers很容易集成和配置。使用@Audited註釋您的實體足以滿足「完整」版本支持。我相信你不能直接使用Spring Data來查詢修訂實體,因爲你總是可以編寫你的AuditReaderRepository
bean並直接使用hibernate審計查詢接口。在這種情況下襬弄兩個版本之間的更改列表將留給您,這基本上意味着獲取修訂版本並確定它們之間的增量。在這種情況下,Envers的主要優勢在於用戶表示仍然是用戶類,而不僅僅是一個字符串(創建者fe)
它取決於您希望支持哪種級別的審計,我會用最小的所需實現。關於在www中選擇什麼樣的審計策略,有一些很好的博客。
使用Spring數據Envers :)
「這個項目是Spring數據JPA項目,以允許訪問由Hibernate Envers管理實體版本的延伸。」
請參閱Spring Data Envers路線圖https://github.com/spring-projects/spring-data-envers/issues/33 – 2015-06-04 14:50:56
FYI Envers內置於Spring數據截至發行列車跳躍者https: //spring.io/blog/2016/02/12/spring-data-release-train-hopper-m1-released – 2016-03-10 06:38:04
- 1. Spring AOP - 數據庫審計
- 2. 隨着數據庫
- 3. 審計與Spring數據JPA
- 4. 用於審計日誌記錄的數據庫設計
- 5. 審計SQL Server數據變化
- 6. 數據庫中多個表的審計歷史記錄
- 7. 審計數據庫回滾
- 8. 數據庫設計審查
- 9. 如何將審計線索記錄到數據庫?
- 10. 數據庫中的記錄計數
- 11. Spring數據審計和@Embedded JPA
- 12. 休眠Envers如何記錄額外的審計數據如表名被審計
- 13. 格式化Access數據庫的記錄
- 14. 數據庫中的計數記錄和計數器變量之間的差異
- 15. 數據庫設計 - 記錄交易
- 16. 數據庫設計交鑰匙記錄
- 17. 我是否需要手動記錄數據以記錄核心數據中隨時間的變化?
- 18. Oracle數據庫審計跟蹤
- 19. 如何調用數據庫記錄以及數據庫記錄
- 20. 用於記錄實驗數據的數據庫設計
- 21. 數據庫設計/結構 - 隨着時間的推移收集數據
- 22. 正在提取數據庫記錄隨着PDO的準備語句
- 23. 數據庫記錄有關n-m關係變化的信息
- 24. 您可以配置SQL Server 2008審計以將審計數據保留在正在審計的數據庫之外的數據庫上嗎?
- 25. 在數據庫表上記錄數據
- 26. ELMAH - 在數據庫中記錄SQL審查elmah.axd
- 27. 隨着Python 3.5新數據的變化,最大值發生變化
- 28. JPA審計/歷史數據與現有數據庫觸發器
- 29. 根據時間隨機選擇從數據庫中記錄
- 30. 企業數據審計
我的應用支持數據每天都會刷新,但另一部分需要知道實體某些字段中發生的所有更改。然後,我必須向他們展示,以便能夠使用我的實體並接收Employees的實例,而不是字符串。這就是爲什麼Envers對我來說真的很棒,但我在配置時遇到問題。 – 2013-05-01 12:41:27
配置有什麼問題?我所要做的就是將envers jar添加到戰爭中,並在我想要審計的類上添加@audited註釋。我遇到的唯一的小問題是entityrelations沒有被審計的實體,但是我只是在關係定義上添加了另一個註釋來不審計這些(@auditmode?不確定atm)。 envers正在爲我工作。我使用最新的休眠4.2 – 2013-05-02 05:00:52