天天看點

Envers概述

版權聲明:本文為部落客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;

 ...

}