- Entity필드에 붙여서 사용하는 어노테이션
@CreatedDate
: 필드에 현재 날짜를 주입.
@CreatedBy
: 필드에 생성한 사람을 주입.
@LastModifiedDate
: 필드에 마지막으로 수정된 날짜 주입.
@ LastModifiedBy
: 필드에 마지막으로 수정한 사람 주입.
- @MappedSuperclass
: 공통 매핑 정보가 있을 때 사용하며 부모 클래스에서 선언하고 필요한 곳에서 상속받아서 사용.
- @Column(updatable = false)
: 생성일자는 수정 불가능하도록 설정.
- @Column(updatable = true)
: 수정일자는 수정 가능하도록 설정. default 값이라 생략함.
- @EntityListeners(AuditingEntityListener.class)
: JPA entity에 이벤트가 발생할 때 수행
: 제일 위 필드 어노테이션을 사용하는 Entity 클래스에 꼭 붙여줘야 함 !
- @EnableJpaAuditing
: 엔티티 객체가 생성되거나 변경되었을 때 이 어노테이션 활용하면 자동으로 값을 등록할 수 있다.
: Spring Data에서 제공하므로 의존성 추가해줘야 함.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
: @SpringBootAppplication이 붙은 메인 클래스에 @EnableJpaAuditing을 붙여줘도 동작은 하지만 Mock테스트 시 문제 발생 가능성.
-> @WebMvcTest(Xxx.class) Controller Test시 문제가 될 수 있다.
-> 모든 테스트는 Application 클래스가 항상 로드되면서 실행이 되는데 Auditing 어노테이션이 등록돼있으면 모든 테스트가 항상 JPA 고나련된 빈을 필요로 하는 상태가 되어버림. @WebMvcTest는 JPA 관련 빈들을 로드하지 않기 때문에 문제 발생.
따라서 JpaAuditingConfig 클래스를 따로 만들어서
@Configuration, @EnableJpaAuditing을 붙여주자 !
'프로젝트' 카테고리의 다른 글
GiftFunding) Spring Security + JWT를 이용한 로그인 구현 (1) | 2023.11.23 |
---|---|
GiftFunding) 예외 처리하기 (@ExceptionHandler, @RestControllerAdvice) (0) | 2023.11.21 |
GiftFunding) 인텔리제이 DB 연결 (Mysql) (0) | 2023.11.21 |
GiftFunding) ERD 작성 (0) | 2023.11.17 |
GiftFunding) 프로젝트 셋업 (1) | 2023.11.16 |