Day 5
Day5
JPA Auditing์ผ๋ก ์์ฑ์๊ฐ/์์ ์๊ฐ ์๋ํํ๊ธฐ
๋ณดํต Entity์๋ ํด๋น ๋ฐ์ดํฐ์ ์์ฑ์๊ฐ๊ณผ ์์ ์๊ฐ์ ํฌํจํ๊ฒ ๋จ โ ์ ์ง๋ณด์์ ์ค์ํ ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ํ์ํ์ง๋ง ์ผ์ผ์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ๊ธฐ์๋ ๊ท์ฐฎ๊ณ ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ธฐ ๋๋ฌธ์ JPA Auditing์ ์ฌ์ฉํจ
๐LocalDate๋ฅผ ์ฌ์ฉ
java8๋ถํฐ ๊ธฐ๋ณธ ๋ ์ง ํ์ ์ธ Date์ ๋ฌธ์ ์ ์ ๋ณด์ํ ํ์
Entity๋ค์ createdDate, modifiedDate๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ์ญํ
src/main/java/com/kyu/book/springboot/domain/BaseTimeEntity.class
package com.kyu.book.springboot.domain;
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeEntity {
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
@MappedSuperclass
JPA Entity ํด๋์ค๋ค์ด BaseTimeEntity์ ์์ํ ๊ฒฝ์ฐ ํ๋๋ค(createdDate, modifiedDate)๋ ์นผ๋ผ์ผ๋ก ์ธ์ํ๋๋ก ํฉ๋๋ค
@EntityListeners(AuditingEntityListener.class)
BaseTimeEntity ํด๋์ค์ Auditing ๊ธฐ๋ฅ์ ํฌํจ์ํด
@CreatedDate
Entity๊ฐ ์์ฑ๋์ด ์ ์ฅ๋ ๋ ์๊ฐ์ด ์๋ ์ ์ฅ๋ฉ๋๋ค.
@LastModifiedDate
์กฐํํ Entity์ ๊ฐ์ ๋ณ๊ฒฝํ ๋ ์๊ฐ์ด ์๋ ์ ์ฅ๋จ
๊ทธ๋ฆฌ๊ณ Posts ํด๋์ค๊ฐ BaseTimeEntity๋ฅผ ์์๋ฐ๋๋ก ์ค์
๋ง์ง๋ง์ผ๋ก JPA Auditing์ ํ์ฑํํ๊ธฐ ์ํด์
/src/main/java/com/kyu/book/springboot/application.class
@EnableJpaAuditing
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด์ test์ฝ๋์์ฑ
src/test/java/com/kyu/book/springboot/domain/posts/PostRepository.class
@Test
public void BaseTimeEntity_enroll(){
LocalDateTime now = LocalDateTime.of(2021,1,5,0,0,0);
postsRepository.save(Posts.builder().title("title").content("content").author("author").build());
List<Posts> postsList = postsRepository.findAll();
Posts posts = postsList.get(0);
System.out.println(">>>>>>> createDate="+posts.getCreatedDate()+", modifiedDate="+posts.getModifiedDate());
assertThat(posts.getCreatedDate()).isAfter(now);
assertThat(posts.getModifiedDate()).isAfter(now);
}
Last updated
Was this helpful?