백엔드 개발 · 기초
JPA Auditing(@CreatedDate, @LastModifiedDate)의 설정 방법과 동작 원리를 설명해주세요.
힌트 · @EnableJpaAuditing과 @EntityListeners를 생각해보세요.
@EnableJpaAuditingBaseEntityAuditorAwarePersistence Context엔티티 리스너
모범답안
JPA Auditing은 엔티티의 생성 시간이나 수정 시간을 자동으로 기록해주는 기능입니다. 설정 방법은 크게 두 가지 단계로 나눌 수 있습니다.
먼저, Spring Boot 애플리케이션의 설정 클래스에 @EnableJpaAuditing 어노테이션을 추가하여 Auditing 기능을 활성화합니다.
다음으로, Auditing 정보를 관리할 BaseEntity 클래스를 만들고, @MappedSuperclass 어노테이션을 붙여 상속을 통해 엔티티들이 해당 필드를 갖도록 합니다. BaseEntity에는 @CreatedDate, @LastModifiedDate 등의 어노테이션을 사용하여 생성일과 수정일 필드를 정의합니다. 필요에 따라 @CreatedBy, @LastModifiedBy를 사용하여 생성자, 수정자를 기록할 수도 있습니다. 이때, 누가 생성하고 수정했는지 기록하려면 AuditorAware 인터페이스를 구현하여 현재 사용자의 정보를 제공해야 합니다.
동작 원리는 JPA가 엔티티의 상태 변화를 감지하고, Persistence Context에 반영하기 전에 엔티티 리스너를 통해 Auditing 관련 어노테이션이 붙은 필드에 값을 자동으로 설정하는 방식입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 JPA / ORM 면접 질문
- JPA에서 @Embedded와 @Embeddable의 용도와 사용법에 대해 설명해주세요.
- Spring Data JPA의 Query Method 네이밍 규칙과 사용법에 대해 설명해주세요.
- JPA에서 엔티티 설계 시 @Setter 사용을 지양하는 이유와 대안은 무엇인가요?
- JPA에서 @GeneratedValue 전략(IDENTITY, SEQUENCE, TABLE, AUTO)의 차이점은?
- JPA에서 엔티티 상태(비영속, 영속, 준영속, 삭제)에 대해 설명해주세요.
- JPA(Java Persistence API)란 무엇이며, 자바 애플리케이션에서 어떤 역할을 하는 기술 표준인가요?