Auditing ์ด๋?
์ํฐํฐ๋ ๋์ค์ ์ ์ง๋ณด์๋ฅผ ์ํด์ ์์ฑ์ผ๊ณผ ์์ ์ผ์ ํ์์ ์ผ๋ก ๊ฐ์ง๊ณ ์์ด์ผ ์ฉ์ดํฉ๋๋ค.
๋จผ์ ์ผ๋ฐ์ ์ผ๋ก ์์ฑ์ผ๊ณผ ์์ ์ผ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์์ฑ์ผ
public Book saveBook(BookDto bookDto) {
// BookDto -> Book ๋ณํ
Book book = ...;
book.setCreatedAt(LocalDateTime.now());
...
}
์์ ์ผ
public Long updateBook(Long bookId, BookDto bookDto) {
// ์์ ๋ก์ง
book.setModifiedAt(LocalDateTime.now());
...
}
์ด๋ฐ์์ผ๋ก ์ํฐํฐ๊ฐ ์ฆ๊ฐํ๋ฉด ์ฆ๊ฐํ ์๋ก ๋จ์ ๋ฐ๋ณต ์ฝ๋๊ฐ ๋์ด๋๊ฒ ๋ฉ๋๋ค.
์ด๋ด ๋ Auditing์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ํจ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค!
JpaAuditing ์ ์ฉ
@MappedSuperClass
@EntityListners(AuditingEntityListener.class)
public abstract class Test {
@CreatedDate
LocalDateTime createdAt;
@LastModifiedDate
LocalDateTime modifiedAt;
}
์ด์ ๋ชจ๋ ์ํฐํฐ์ ํด๋น ํด๋์ค๋ฅผ ์์ ๋ฐ๋๋ก ํ๋ฉด ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก JpaAuditing์ ํ์ฑํ๋๋๋ก ์ด๋ ธํ ์ด์ ๋ง ๋ถ์ฌ์ฃผ๋ฉด ๋์ ๋๋ค.
@EnableJpaAuditing // **
@SpringBootApplication
public class Application {
...
}
๊ฐ์ฌํฉ๋๋ค.
Test ์ ์ฃผ์์ฌํญ
@EnableJpaAuditing์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ต์ ํ๋์ ์ํฐํฐ๊ฐ ํ์ํฉ๋๋ค. ํ์ง๋ง @WebMvcTest๋ฅผ ํ๋ฉด Entity๋ฅผ ์ฐพ์ ์ ์์ด ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์ด๋๋ ๋ฐ๋ก @Configuration์ด ๋ถ์ ํด๋์ค์ ๋ถ๋ฆฌ์์ผ์ฃผ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค.
@Configuration
@EnableJpaAuditing
public class AppConfig {
}
๊ฐ์ฌํฉ๋๋ค.
REFERENCE
- ์คํ๋ง ๋ถํธ์ AWS๋ก ํผ์ ๊ตฌํํ๋ ์น ์๋น์ค - ์ด๋์ฑ