我正在添加JPA應用程序到許多現有應用程序(用MS Access,Delphi,Perl,C#,PHP等編寫)的複雜系統中。基礎MS-SQL數據庫使用數據庫觸發器在歷史數據庫表中寫入任何已更改數據庫條目的副本,並添加SYSTEM_USER
和GETDATE()
。由於我的新JPA應用程序使用連接池 - 我們的技術用戶(用戶:「Java」)始終會對數據庫表進行所有更改,並且JPA應用程序的所有歷史數據庫表條目將始終具有「Java」作爲SYSTEM_USER。JPA審計/歷史數據與現有數據庫觸發器
如何讓歷史表中的條目自動創建 - 不丟棄現有的觸發器?
我想過:
- 告訴現有的觸發器不啓動,當用戶的「Java」修改表和創建我自己的歷史數據庫表中的條目。因此,我不得不爲每個歷史數據庫表創建許多新的實體類。不太方便。
- 禁用連接池併爲每個修改創建一個單獨的連接 - 使用實際用戶連接到數據庫。但是這會有性能上的缺陷。我不知道如何禁用連接池。
- 使用臨時表來始終存儲當前用戶 - 並且數據庫觸發器應該在創建歷史數據庫表中的條目時使用該存儲的用戶
- 在操作後手動更改歷史數據庫表中的用戶。