JPA - Auditing
JPA - Auditing
엔티티 변경 시점에 언제, 누가 변경했는지에 대한 정보를 기록하는 기능
-
Auditing 정보를 담은 추상 클래스 생성
@MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTimeEntity { @CreatedDate private LocalDateTime createdDate; @LastModifiedDate private LocalDateTime lastModitiedDate; }
어노테이션 설명 @MappedSuperclass 엔티티 클래스들이 해당 어노테이션이 달린 클래스를 상속할 경우 CreatedDate 등의 어노테이션을 컬럼으로 인식 @EntityListeners(AuditingEntityListener.class) 해당 클래스에 Auditing 기능을 포함 @CreatedDate 엔티티가 생성되어 DB에저장될 때 시간 자동저장 @LastModifiedDate 엔티티가 수정될 시 시간 자동 저장 @CreatedBy 엔티티를 생성한 user 저장 @LastModifiedBy 엔티티를 수정한 user 저장 -
원하는 엔티티에 Auditing 클래스 상속 및 Application main에 @EnableJpaAuditing 설정
@Entity @Table(name = "user") @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class User extends BaseTimeEntity { @Id @Column(name = "user_id") @GeneratedValue(strategy = GenerationType.IDENTITY) long id; //...생략 }
@EnableJpaAuditing @SpringBootApplication public class PlatformApplication { public static void main(String[] args) { SpringApplication.run(PlatformApplication.class, args); } }
-
DB에 저장 시 createdDate와 lastModitiedDate가 같이 저장된 것을 볼 수 있다.