[Spring Data JPA] Auditing 찍먹하기

까망사과·2023년 10월 21일
0

Spring 찍먹하기

목록 보기
5/5

🔭 Auditing이란

Spring Data JPA에서는 Auditing이라는 기능을 제공한다.
"audit"이 "감시하다"라는 의미를 가지는 것처럼 Auditing은 엔티티에 대한 CRUD 동작을 추적하고 기록하는 기능이다.


🔥 JPA 엔티티에 Auditing 적용하기

🕹️ Auditing 활성화하기

@Configuration 클래스에 @EnableJpaAuditing 애너테이션을 추가하여 Auditing 기능을 활성화한다.
@SpringBootApplication@Configuration이 포함되어 있으므로 여기에 추가해도 된다.

@EnableJpaAuditing
@SpringBootApplication
public class ExampleApplication { ... }

🎧 엔티티 클래스에 애너테이션 추가하기

엔티티 클래스에 @EntityListeners 애너테이션을 추가하면 엔티티에 대한 영속성 이벤트를 수신하는 리스너 클래스를 설정할 수 있다.
Auditing 기능을 적용하려면 AuditingEntityListener 클래스를 설정하면 된다.

⛳ 엔티티 클래스에 Auditing 관련 필드 정의하기

위에서 Auditing 리스너를 설정한 엔티티 클래스의 필드에 다음 애너테이션을 추가하면 된다.

  • @CreatedDate: 엔티티가 생성된 일자 (LocalDateTime 타입 필드)
  • @CreatedBy: 엔티티를 생성한 주체의 이름 (String 타입 필드)
  • @LastModifiedDate: 엔티티가 마지막으로 수정된 일자 (LocalDateTime 타입 필드)
  • @LastModifiedBy: 엔티티를 마지막으로 수정한 주체 (String 타입 필드)
@Entity
@EntityListeners({ AuditingEntityListener.class })
public class Foo {

	@CreatedDate
	@Column(name = "created_at", updatable = false)
	private LocalDateTime createdAt;

	@CreatedBy
	@Column(name = "created_by")
	private String createdBy;

	@LastModifiedDate
	@Column(name = "modified_at")
	private LocalDateTime modifiedAt;

	@LastModifiedBy
	@Column(name = "modified_by")
	private String modifiedBy;

	...
}

클래스에 MappedSuperclass 애너테이션을 추가하면 서브클래스에게 컬럼을 상속할 수 있다.

@Entity
public class Bar extends Foo {

	// Foo의 각 필드를 컬럼으로 사용할 수 있다.

	...
}

0개의 댓글