-
Notifications
You must be signed in to change notification settings - Fork 2
JPA 를 사용해서 엔티티 관계를 설정할 때 공통 필드가 있다면?
her0807 edited this page Jun 27, 2021
·
1 revision
서비스를 운영할 때보면 회원 생성 시간, 수정 시간, 게시글 생성 시간, 수정 시간 처럼
테이블에 공통 필드가 존재하는 경우가 있다. 그럴 때는 `Base Entity' 를 만들어서 다른 엔티티 클래스에서
상속 받아서 구현하자!
상속을 구현하기 위해서 필요한 어노테이션 들이 있다.
베이스 엔티티 클레스에 이 어노테이션을 붙이면
- 상속 받은 클래스에 베이스 엔티티 필드가 칼럼으로 생성된다.
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public class BaseEntity {
@CreatedDate
private LocalDateTime create;
@LastModifiedDate
private LocalDateTime updated;
}
예시 아래와 같은 post 테이블이 생성 될 때 칼럼이 총 3개가 되는 것이다.
public class Posts extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
변경되는 시점, 생성 시점의 시간을 기록해야 할 일이 있다. audit(감사,회계)의미처럼 이 클래스를 사용하면
Auditing 기능으로 인해서 트랜잭션 커밋 시점에 플러시가 호출할 때 하이버네이트가 자동으로
시간 값을 채워주는것을 확인 할 수 있다. 이걸 사용할 때는
스프링 부트의 Entry 포인트인 실행 클래스에 @EnableJpaAuditing
어노테이션을 적용하여 JPA Auditing을 활성화 해야하는 것을 잊지 말아야 합니다.
AuditingEntityListener