@EnableJpaAuditing
- 설정 클래스에 적용 함으로써 JPA 이력관리를 사용하도록 설정한다.
@Audited
@Audited(withModifiedFlag = true)
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
@Embedded
private AuditMetadata auditMetadata;
}
@Embeddable
public class AuditMetadata {
@CreatedBy
private Integer registeredBy;
@CreatedDate
private LocalDateTime registeredAt;
@LastModifiedBy
private Integer updatedBy;
@LastModifiedDate
private LocalDateTime updatedAt;
}
- Person 테이블을 이력관리를 적용하려면 엔티티에 @Audited 를 적용한다. 적용하게 되면 이력관리용 테이블로 person_aud 테이블과 revinfo 테이블을 사용한다.
- person_aud 테이블은 person 테이블의 각 컬럼들 + 이력관리 id값인 rev, 타입을 나타내는 revtype 으로 설계된다.
- revtype - 0: insert, 1: update, 2: delete
- withModifiedFlag - true 옵션 설정시 person 테이블 각 컬럼에 매치되는 flag 컬럼이 이력관리 테이블에 추가적으로 생성되고, 값의 변경 여부를 저장한다.