MappedSuperclass๋ก Entity ์์ ํด๋์ค ์์ฑ
@MappedSuperclass๋ฅผ ์ด์ฉํ์ฌ Entity๋ค์ ์์ ํด๋์ค๋ฅผ ์์ฑํ์ฌ ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ฌ๋ณด์.
@CreatedDate
Model ๊ฐ์ฒด์ Entity๋ฅผ ์์ฑํ ๋, ์์ฑ๋ ์๊ฐ์ ์ ์ฅํ๊ณ ์ถ์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ Entity์ ์ถ๊ฐํ๋ฉด ๋๋ค.
@CreatedDate
private LocalDateTime createDate;
Entity์ ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ ์ถ๊ฐํ๊ณ , ์ด Entity๋ฅผ ์์ฑํ๋ฉด, DB์ ๋ค์๊ณผ ๊ฐ์ ์นผ๋ผ์ด ์ ์ฅ๋๋ค.
ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ง๋ ์๊ฐ์ด DB์ ์ ์ฅ๋๋ค.
์์ฑ ์๊ฐ์ด ํ์ ์๋ Entity๊ฐ ์์๊น??
์๋ง ์ฌ๋งํ Entity๋ ๋ชจ๋ ์์ฑ ์๊ฐ์ด ํ์ํ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๊ณ ๋๊ฐ์ @CreateDate ์ฝ๋๋ฅผ ๊ฐ๊ฐ Entity๋ง๋ค ์
๋ ฅํ๋ฉด ๋นํจ์จ์ ์ด๋ค.@MappedSuperclass
๋ก Entity ์์ ํด๋์ค ์์ฑํด์ ์ฝ๋์ ๋ฐ๋ณต์ ์์ ๋ณด์.
CreateDateEntity
๋ค์๊ณผ ๊ฐ์ด CreateDateEntity๋ฅผ ์์ฑํด ์ค๋ค.
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
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 CreateDateEntity {
@CreatedDate
private LocalDateTime createDate;
}
@MappedSuperclass
์ฃผ์์ผ๋ก ์ธํด ์ด ํด๋์ค๋ฅผ ๋ค๋ฅธ Entity๊ฐ ์์ํ ๊ฒฝ์ฐ, createDate ํ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.@EntityListeners(AuditingEntityListener.class)
๋ Auditing ๊ธฐ๋ฅ์ ์ฌ์ฉ ํด์ฃผ๋ ์ด๋
ธํ
์ด์
์ธ๋ฐ, Auditing์ JPA๊ฐ DB์ ๋ณํ๊ฐ ์์ ๋๋ง๋ค ๊ฐ์ํด ์ฃผ๋ ๊ธฐ๋ฅ์ผ๋ก, ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์์ฑ๋ ๋๋ง๋ค createDate์ ์๊ฐ์ ๋ฃ์ด์ผ ํ๋ฏ๋ก ์ฌ์ฉํด์ผ ํ๋ค.
์์, Auditing ํ์ฑํ
๊ธฐ์กด์ User์ ์๋ createDate
ํ๋๋ฅผ ์ง์์ฃผ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์์ํ๋ค.
public class User extends CreateDateEntity
Application Class
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@EnableJpaAuditing // Auditing ํ์ฑํ
@SpringBootApplication
public class StudyMateApplication {
public static void main(String[] args) {
SpringApplication.run(StudyMateApplication.class, args);
}
}
Application Class์ @EnableJpaAuditing
๋ฅผ ์ถ๊ฐํด์ Auditing ๊ธฐ๋ฅ์ ํ์ฑํ์ํจ๋ค.
๊ฒฐ๊ณผ ํ์ธ
์์๋ฐ๊ธฐ ์ ๊ณผ ๋์ผํ๊ฒ ์์ฑ ์๊ฐ์ด ์ถ๋ ฅ๋๋ค.
์ด๋ก์จ createDate ํ๋๊ฐ ํ์ํ ๋ชจ๋ Entity๋ CreateDateEntity
๋ฅผ ์์๋ฐ์ผ๋ฉด ์ฝ๋์ ์ค๋ณต์ ํผํ ์ ์๋ค.
'JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
N+1 ๋ฌธ์ ์ ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2022.03.17 |
---|---|
JPA @Query ์ฌ์ฉ (0) | 2022.03.14 |
JPA์์ Pageable๋ก ํ์ด์ง ์ฒ๋ฆฌํ๊ธฐ (0) | 2022.03.13 |
ORM(Object Relational Mapping) (0) | 2022.03.13 |
JPA ์ํฐํฐ ์ด๋ ธํ ์ด์ (0) | 2022.03.12 |