版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/2682634
Envers概述
Envers項目目标是使翻譯JPA持久類更容易。所有你需要做的是注釋你的持久化類以及類的屬性,用@Versioned。
對于每個要翻譯的實體(entity),會建立一個表。
Envers會儲存實體改變的曆史。你還可以檢索和查詢曆史資料。
類似于Subversion,其庫包含修改(revision)的概念。基本上,事務處理送出是一次修改。由于修改是全局的,有一個修改号,是以你可以查詢任何修改版本的各個實體。
Envers庫與Hibernate和Hibernate的實體管理器一起工作,為了更準确地完成實體翻譯工作,實體必須有一個不變的唯一辨別符(主鍵),還可以在單獨、JBoss AS、JBoss Seam或Spring等環境下工作。
Envers的特征如下:
1)基本屬性的翻譯(字元串、整數、長整型...);
2)内嵌元件的翻譯,内嵌元件由基本屬性組合而成;
3)帶簡單、組合、和内嵌的IDS的類的翻譯;
4)一對一的單向或雙向關系的翻譯;
5)一對多的單向或雙向關系的翻譯;
6)支援二級表;
7)為每次修改的日志資料都使用了“修改實體”;
8)查詢曆史資料。
例子:
@Entity
public class Person{
@Id
@GeneratedValue
private int id;
@Column
@Versioned
private String name;
private String surname;
...
}