728x90
Auditing
์ํฐํฐ๋ฅผ ์์ฑ, ๋ณ๊ฒฝํ ๋์ ์๊ฐ๊ณผ, ๋ณ๊ฒฝํ ์ฌ๋์ ์ถ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ํ๊ฒ JPA๋ง ์ด๋ค๋ฉด @PrePersist ๋ฑ์ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํด์ ๋ฑ๋ก๋๋ ์์ ์ ์๊ฐ๊ณผ ์ฌ๋ ๋ฑ์ ์ ์ฅํ๋๋ก ํด์ผ ํฉ๋๋ค.
์คํ๋ง Data JPA๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ด๋ฅผ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ธฐ๋ฅ์ ์ ๊ณตํด์ค๋๋ค.
์ค์
์๋ ๋ ์ด๋ ธํ ์ด์ ์ ๋ชจ๋ ์ฌ์ฉํด์ฃผ์ด์ผ ํฉ๋๋ค.
@EnableJpaAuditing -> ์คํ๋ง ๋ถํธ ์ค์ ํด๋์ค์ ์ ์ฉํด์ผ ํฉ๋๋ค.
@EntityListeners(AuditingEntityListener.class) -> ์ํฐํฐ์ ์ ์ฉํฉ๋๋ค.
์์
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
@EnableJpaAuditing //Auditing
@SpringBootApplication
public class JpashopApplication {
public static void main(String[] args) {
SpringApplication.run(JpashopApplication.class, args);
}
}
๋ฑ๋ก์, ์์ ์๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ AuditorAware ์คํ๋ง ๋น ๋ฑ๋ก
@CreatedBy, @LastModifiedBy ์ด๋ ธํ ์ด์ ์ด ๋ถ์ ํ๋์ ์ ์ฉ๋ฉ๋๋ค.
@Bean
public AuditorAware<String> auditorProvider() {
return () -> Optional.of(UUID.randomUUID().toString());
}
์ค๋ฌด์์๋ ์ธ์ ์ ๋ณด๋, ์คํ๋ง ์ํ๋ฆฌํฐ ๋ก๊ทธ์ธ ์ ๋ณด์์ ID๋ฅผ ๋ฐ์ต๋๋ค.
Reference
728x90
'๐๏ธ Spring > JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Data JPA] MVC์์์ ํ์ด์ง๊ณผ ์ ๋ ฌ ์ฌ์ฉ (0) | 2022.07.28 |
---|---|
[Spring Data JPA] JPA ํ์ฅ ๊ธฐ๋ฅ - ๋๋ฉ์ธ ํด๋์ค ์ปจ๋ฒํฐ (2) | 2022.07.28 |
[Spring Data JPA] ์ฌ์ฉ์ ์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌํํ๊ธฐ (0) | 2022.07.28 |
[Spring Data JPA] ๋ฝ(Lock) ์ฌ์ฉํ๊ธฐ (0) | 2022.07.28 |
[Spring Data JPA] ์ฝ๊ธฐ ์ ์ฉ ์ฟผ๋ฆฌ ๋ง๋ค๊ธฐ (JPA Hint) (0) | 2022.07.28 |