知识大全 JBoss Envers学习笔记

Posted 版本

篇首语:知识是从刻苦劳动中得来的,任何成就都是刻苦劳动的结果。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JBoss Envers学习笔记相关的知识,希望对你有一定的参考价值。

JBoss Envers学习笔记  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  试用JBoss Envers项目有一阵子了 趁Envers项目发布 版 也同时把学习笔记共享给大家 希望对大家有所帮助

  下面来看一下JBoss Envers项目的目的 官方说明如下

   The Envers project aims to enable easy versioning of persistent classes All that you have to do is annotate your persistent class or some of its properties that you want to version  with @Versioned  For each versioned entity  a table will be created which will hold the history of changes made to the entity  You can then retrieve andquery historical data without much effort

  JBoss Envers目的是根据对实体的设置 提供记录执行数据变更历史的功能(数据变更版本) Envers的配置非常简单 如果需要对某个实例进行历史数据版本记录 只需要在实例上配置@Versioned annotation即可 针对每个实体的版本的历史数据 Envers都会创建一个单独的数据表进行存储

  目前Envers支持Hibernate和Hibernate entitymanager(JPA实现)

  本示例以Hibernate entitymanager为例 讲解其配置的方法

  先配置 persistence xml 加入 property配置

     <persistence unit >         <provider> hibernate ejb HibernatePersistence</provider>         <class></class>         <properties>             <property name= hibernate dialect   />             <!  other hibernate properties  >                 <property name= hibernate ejb event post insert                  value= jboss envers event VersionsEventListener  />             <property name= hibernate ejb event post update                  value= jboss envers event VersionsEventListener  />             <property name= hibernate ejb event post delete                  value= jboss envers event VersionsEventListener  />             <property name= hibernate ejb event pre collection update                  value= jboss envers event VersionsEventListener  />             <property name= hibernate ejb event pre collection remove                  value= jboss envers event VersionsEventListener  />             <property name= hibernate ejb event post collection recreate                  value= jboss envers event VersionsEventListener  />         </properties>     </persistence unit>

  示例代码

       import  jboss versions Versioned;            import javax persistence Entity;      import javax persistence Id;      import javax persistence GeneratedValue;      import javax persistence Column;            @Entity      @Versioned   public class Blog          @Id         @Column(length= )       private String id;              @Versioned       @Column(length= )       private String title;                @Column(length= )       private String date;              @Versioned       @ManyToOne         private String body;                 @ManyToOne           private Author author;       // add getters  setters  constructors  equals and hashCode here            @Entity   @Versioned   public class Author           @Id       @Column(length= )       private String id;              @Versioned       @Column(length= )       private String name;         

  下面是进行测试的代码

        // 新增操作   entityManager getTransaction() begin();         Author matthew = new Author(   Matthew Xie );     Blog newBlog = new Blog(   Matthew s new Blog   TODOadd content here  matthew);            entityManager persist(matthew);     entityManager persist(newBlog);          entityManager getTransaction(mit();

       //对Blog和author进行修改操作    entityManager getTransaction() begin();            Author author = entityManager find(Author class   );      Blog blog = entityManager find(Blog class   );            // Changing the address s house number      author setName( Matt Xie )       Author newAuthor = new Author(   newAuthor );          // change blog author to newAuthor    blog setAuthor(newAuthor);          entityManager getTransaction(mit();

     //下面代码 演示了如何取得历史版本数据   VersionsReader reader = VersionsReaderFactory get(entityManager);       // get Blog all versions id   List<Number> versions = reader getRevisions(Blog class   /*blog id*/);   for (Number version : versions)            Blog blog = reader find(Blog class    version);     

cha138/Article/program/Java/ky/201311/28219

相关参考

知识大全 Spring Integration学习笔记(一)

SpringIntegration学习笔记(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 PL/SQL学习笔记(一)

PL/SQL学习笔记(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  基本概念 &

知识大全 PL/SQL学习笔记(五)

PL/SQL学习笔记(五)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  创建和管理表  对象 

知识大全 JAVA虚拟机实例学习笔记一

JAVA虚拟机实例学习笔记一  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  编译顺序      

知识大全 linux Shell学习笔记第五天

linuxShell学习笔记第五天  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第五天函数与任

知识大全 Oracle学习笔记:正则表达式

Oracle学习笔记:正则表达式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracleg数

知识大全 JAVA虚拟机实例学习笔记二

JAVA虚拟机实例学习笔记二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数组    数组也是

知识大全 ASP.NET mvc学习笔记

ASP.NETmvc学习笔记  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天帮哥们解决几个问

知识大全 PHP学习笔记之面向对象设计

PHP学习笔记之面向对象设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  面向对象设计是php

知识大全 实战开发C# 索引器学习笔记

实战开发C#索引器学习笔记  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简单说来所谓索引器就是