知识大全 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学习笔记(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 基本概念 &
PL/SQL学习笔记(五) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 创建和管理表 对象
JAVA虚拟机实例学习笔记一 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 编译顺序
linuxShell学习笔记第五天 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第五天函数与任
Oracle学习笔记:正则表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracleg数
JAVA虚拟机实例学习笔记二 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数组 数组也是
ASP.NETmvc学习笔记 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天帮哥们解决几个问
PHP学习笔记之面向对象设计 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 面向对象设计是php
实战开发C#索引器学习笔记 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 简单说来所谓索引器就是