Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백엔드스쿨
- 백엔드
- 백엔드공부
- MariaDB
- 제로베이스 #백엔드 #Java #Spring #개발자 #백엔드공부 #백엔드 스쿨
- 스프링부트실전가이드
- 프로젝트 생성
- 유효성검사
- #devops #terraform #state
- 데이터베이스 연동
- 엔티티 설계
- DAO 연동 컨트롤러 서비스 설계
- 스프링 부트 핵심 가이드
- spring
- DAO 설계
- 리포지토리 인터페이스
- 인텔리제이
- JPA
- 제로베이스
- auditing
- ORM
- Java
- validated
- Swagger
- 개발자
Archives
- Today
- Total
JeongJin's Blog
08. Spring Data JPA 활용 (4) 본문
8.7 [ 한걸음 더 ] JPA Auditing 적용
- JPA에서 'Audit'이란 '감시하다' 라는 뜻으로, 각 데이터마다 '누가', '언제' 데이터를 생성했고 변경했는지 감시한다는 의미로 사용
- 공통적으로 들어가는 '생성 일자', '변경 일자' 경우 대표적으로 많이 사용되는 필드
- 생성 주체
- 생성 일자
- 변경 주체
- 변경 일자
- Spring Data JPA 에서는 이러한 값을 자동으로 넣어주는 기능을 제공한다.
8.7.1 JPA Auditing 기능 활성화
- main() 메서드가 있는 클래스에 @EnableJpaAuditing 어노테이션을 추가하면 된다.
@SpringBootApplication
@EnableJpaAuditing
public class AdvancedJpaApplication {
public static void main(String[] args) {
SpringApplication.run(JpaApplication.class, args);
}
}
- bean에 등록하는 방법
- config package 생성 후 클래스 생성하여 bean을 생성한다.
- controller test 시 에러를 방지하기 위해서는 main 메서드에 선언하는것보다 bean으로 등록하여 처리하면 @WebMvcTest 시 에러 발생을 해결.
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableJpaAuditing
public class JpaAuditingConfiguration() {
}
8.7.2 BaseEntity 만들기
- 코드의 중복을 없애기 위해서는 각 엔티티에 공통으로 들어가게 되는 컬럼(필드)을 하나의 클래스로 빼는 작업을 수행하는데 BaseEntity 클래스를 생성한다.
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@MappedSuperclass
@Builder(builderMethodName = "doesNotUseThisBuilder")
@EntityListeners(AuditingEntitiyListener.class)
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
}
- @MappedSuperclass: JPA의 엔티티 클래스가 상속받을 경우 자식 클래스에 매핑 정보를 전달한다.
- @EntityListeners: 엔티티를 데이터베이스에 적용하기 전후로 콜백을 요청할 수 있게 한다.
- AuditingEntityListener: 엔티티의 Auditing 정보를 주입하는 JPA 엔티티 리스너 클래스
- @CreateDate: 데이터 생성 날짜를 자동으로 주입한다.
- @LastModifiedDate: 데이터 수정 날짜를 자동으로 주입한다.
- @Builder: Builder 패턴을 적용
- builderMethodName: 다른 이름으로 네이밍을 할 수 있도록 제공하는 속성
...
public class Product extends BaseEntity {
}
- 해당 클래스에서 BaseEntity를 상속받아서 사용한다.
- 매번 LocalDateTime.now() 메서드를 사용해 시간을 주입하지 않아도 자동으로 값이 생성된다.
Tips
- JPA Auditing 기능에는 @CreatedBy, @ModifiedBy 어노테이션도 존재
- 누가 엔티티를 생성했고 수정했는지 자동으로 값을 주입하는 기능
- 기능을 사용하려면 AuditorAware를 스프링 빈으로 등록할 필요가 있음
'Book Study > 스프링 부트 핵심 가이드' 카테고리의 다른 글
10. 유효성 검사와 예외 처리 (1) (0) | 2023.11.20 |
---|---|
09. 연관관계 매핑 (0) | 2023.11.15 |
08. Spring Data JPA 활용 (3) (0) | 2023.11.08 |
08. Spring Data JPA 활용 (2) (0) | 2023.11.07 |
08. Spring Data JPA 활용 (1) (0) | 2023.11.06 |