我有一個Web項目,它使用數據庫來存儲數據,這些數據用於生成將爲遠程計算機處理的任務,以更改該記錄並存儲新數據。我的問題在於,我必須在每張桌子上存儲所有更改,但我不需要所有這些信息。例如,表A可能有5個字段,但爲了歷史目的,我只需要2個字段。另一個表B可能有3個,我將不得不添加另一個(例如日期)。另外,在日常任務生成過程中,我不需要更改,只需要最近一次。管理數據庫中的歷史記錄
哪一個是維護變更歷史的最佳方式?有人告訴我,一個好主意是有兩個表,A(B)表和另一個表A_history(B_history)以及所需的字段。這實際上是我正在做的,使用觸發器插入到歷史記錄表中,但我對這種方法感到不舒服。我的項目使用Spring(Spring數據,Hibernate和JPA),如果我更改數據庫(當前MySQL),我不得不遷移觸發器。有沒有一種管理歷史記錄的好方法?表可以使用Hibernate/JPA註釋生成。
如果我維護兩個表的方法,我可以將一個方法添加到存儲庫以同時從當前表和歷史表中獲取行?
Hibernate Envers正是我所需要的(至少我認爲是這樣)。只是一個問題。與Spring Data(JPA)兼容。我使用存儲庫連接我的數據庫,我不想重寫太多來添加Envers。 – 2013-04-30 21:40:20
我沒有這樣的實驗:Spring Data JPA + Hibernate Envers。布我相信它必須正常工作。正如我前面提到的,如果你想在相應的審計表中捕獲它們的更改,不要使用更新/刪除HQL查詢(在JpaRepository中不要使用像'deleteInBatch(Iterable entities)'和'deleteAllInBatch()'這樣的方法) –
2013-05-02 10:01:11