`

SpringDataJpa杂记(一) Auditing相关

阅读更多
零) 这是干什么呢?
随意翻看spring-data-jpa (以下简称sdj)文档时发现有这个有趣的小东西,
sdj提供了几个有趣的元注释用在实体类上,作为对javax.persistence.*元注释的扩展。

  • @CreatedDate
  • @CreatedBy
  • @LastModifiedDate
  • @LastModifiedBy

有了这几个元注释以后就会在实体创建或更新的时候把操作时间或操作人一并更新到数据库里去,
这个很方便。

一) 环境
  • springframework (3.2.4.RELEASE)
  • spring-data-jpa (1.3.4.RELEASE)


<dependency>
	<groupId>org.springframework.data</groupId>
	<artifactId>spring-data-jpa</artifactId>
	<version>1.3.4.RELEASE</version>
	<exclusions>
		<exclusion>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
		</exclusion>
		<exclusion>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
		</exclusion>
	</exclusions>
</dependency>


二) 为要监控的实体加上EntityListener
可以使用元注释或orm.xml,两者二选其一
2.1 标注
import javax.persistence.*;
import org.springframework.data.annotation.*;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

@Entity
@EntityListeners({AuditingEntityListener.class})
public class SomeEntity {

	@Id
	private Integer id;
	
	@CreatedDate
	private Long createdDate;
	
	@CreatedBy
	private User user;
	
	@LastModifiedBy
	private User lastModeiUser;
	
	// 构造
	public SomeEntity() {
	}
	
	// getter & setter
}

2.2 xml方式
<persistence-unit-metadata>
	<persistence-unit-defaults>
		<entity-listeners>
			<entity-listener class="org.springframework.data.jpa.domain.support.AuditingEntityListener" />
		</entity-listeners>
	</persistence-unit-defaults>
</persistence-unit-metadata>


2.3 实现org.springframework.data.domain.AuditorAware<T>, 这个接口负责从安全上下文中获取系统的用户信息。我们这里以apache-shiro作为安全框架!
import domain.User;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.data.domain.AuditorAware;

public class UserAuditorAware implements AuditorAware<User> {

	@Override
	public User getCurrentAuditor() {
		Subject subject = SecurityUtils.getSubject();
		Object object = subject.getPrincipal();
		return (User) object;
	}

}


2.4 最后配置一下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd">

	<jpa:repositories base-package="pkg.of.repository" />
	
	<bean id="userAuditorAware" class="auditor.UserAuditorAware" />
	<jpa:auditing auditor-aware-ref="userAuditorAware" />

</beans>
分享到:
评论
2 楼 xiaoji_j 2015-12-15  
谁实现这个功能了啊,求指导
1 楼 venlentine 2014-01-06  
使用这个,新增的时候正常,4个字段都有值
但是我更新记录的时候, @CreatedBy 和  @CreatedDate字段的值都被清空了,为什么呢

相关推荐

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    **Spring Data JPA** 是一个基于 **Java** 的开源框架,它是 **Spring Framework** 的一个模块,主要用于简化 **Java Persistence API (JPA)** 的使用。JPA 是 Java 平台上的一个标准,用于管理和持久化应用程序的...

    Spring Data JPA 笔记

    Spring Data JPA 是一个强大的框架,它简化了Java应用程序与数据库之间的交互,是Spring生态中的重要组成部分。通过使用Spring Data JPA,开发者可以避免编写大量的JPA(Java Persistence API)和SQL代码,专注于...

    spring学习:spring data jpa

    Spring Data JPA是Spring框架的一个模块,主要目的是简化Java企业级应用中数据访问层的开发。这个框架构建在JPA(Java Persistence API)之上,提供了一种声明式的方式来操作数据库,使得开发者无需编写大量的SQL...

    SpringData JPA 参考文档PDF 英文

    Spring Data JPA是Spring框架的一部分,主要简化了数据访问层(Repository层)的代码开发,它提供了一种简便的方式来实现数据访问层的接口。Spring Data JPA 1.4.2版本的官方参考文档详细介绍了如何使用Spring Data ...

    Spring Data JPA中文文档[1.4.3]

    Spring Data JPA是Spring框架的一个重要模块,专为简化Java持久层编程而设计。它提供了对JPA(Java Persistence API)的高度抽象,使得开发者能够更高效地与数据库进行交互,无需编写大量的DAO(Data Access Object...

    spring data jpa中文文档

    Spring Data JPA是Spring框架的一个模块,主要目的是简化Java企业级应用程序中数据访问层的开发。这个框架提供了对Java Persistence API (JPA) 的高级抽象,使得开发者可以更高效地与数据库进行交互,无需编写大量的...

    Spring Data JPA初使用 .doc

    Spring Data JPA是Spring框架的一个重要组成部分,专为简化数据访问层的开发而设计。它提供了与各种持久层技术(如JPA,JDBC等)的集成,使得开发者可以更专注于业务逻辑,而不是底层的数据操作代码。在Spring Data ...

    SpringDataJpa.rar

    Spring Data JPA是Spring框架的一个模块,它简化了Java Persistence API (JPA)的使用,提供了与各种数据存储系统的交互方式。Spring Data JPA通过提供一套高级的抽象层,使得开发者能够更容易地实现数据访问层的功能...

    spring data jpa.jar

    Spring Data JPA是Spring框架的一个重要模块,专为简化Java持久层编程而设计,它提供了对JPA(Java Persistence API)的高度抽象和便捷的访问。这个压缩包文件"spring_data_jpa.jar"包含了开发基于Spring Data JPA...

    轻松实现基于JPA的库SpringDataJPA.zip

    Spring Data JPA 的目标是通过让一些必须的工作变得更简单,来显著提高数据访问层的实现。作为一个开发者,你写你的仓库界面,包括自定义查询方法,而 Spring 给你提供自动实现。特性对建立基于Spring 和 JPA 的库的...

    spring-data-jpa-reference API

    Spring Data JPA 是 Spring 框架下的一个子项目,旨在简化 Java 应用程序中的数据访问层开发工作。它提供了丰富的功能来支持 JPA(Java Persistence API)的使用,包括对实体的查询、更新以及管理等操作的支持。 ##...

    Spring-data-jpa示例源码

    **Spring Data JPA** 是一个基于 **Java** 的框架,用于简化 **JPA (Java Persistence API)** 的使用,它是 **Spring Framework** 的一部分。Spring Data JPA 提供了一种声明式的方式来处理数据库交互,允许开发者以...

    spring-data-jpa-examples

    5. **Auditing**:Spring Data JPA 提供了审计功能,可以自动记录实体的创建时间(@CreatedDate)和最后修改时间(@LastModifiedDate)。 四、实战应用 在 "spring-data-jpa-examples-master" 项目中,我们可以看到...

    spring-data-commons-1.7.2.RELEASEspring-data-jpa-1.5.2.RELEASE-java datajpa

    Spring Data Commons 和 Spring Data JPA 是 Spring 框架中的两个关键模块,它们在 Java 应用开发中扮演着重要角色,特别是在数据访问层。这两个模块是基于 Java 的数据访问接口(JPA)来简化数据库操作,使得开发者...

    spring-data-jpa-reference1.3.pdf

    根据提供的文档信息,我们可以深入探讨Spring Data JPA的相关知识点,主要围绕其1.3版本的特性与使用方法展开讨论。 ### Spring Data JPA 概述 Spring Data JPA 是一个强大的框架,它简化了Java Persistence API ...

    sping+data+jpa

    Spring Data JPA是Java开发中的一个关键框架,它简化了Spring应用中对Java Persistence API (JPA) 的使用。这个框架允许开发者以声明式的方式处理数据访问层的代码,极大地提高了开发效率。在这个名为"spring-data-...

    spring jpa reference

    在第2章节“JPARepositories”中,讨论了Spring Data JPA中与JPA相关的仓库接口的更多细节。例如,查询查找策略、JPQL命名查询的使用、以及如何利用Spring命名空间来配置实体扫描和仓库接口。通过查询方法可以实现...

    SpringDataJpa

    Spring Data JPA是Spring框架的一个模块,专门用于简化Java持久层的开发,它提供了一种声明式的方式来处理数据访问,让开发者能够以一...在项目中,可以利用SpringDataJpa-master这样的资源来实践和深入理解这一技术。

    JPA相关jar包

    标题"JPA相关jar包"指的是与Java Persistence API(JPA)相关的Java库,这里提到了两个具体的jar包:spring-data-commons-1.10.2.RELEASE.jar 和 spring-data-jpa-1.8.2.RELEASE.jar。这两个jar包是Spring Data框架...

Global site tag (gtag.js) - Google Analytics