1. JPA Auditing 적용하기 (시간 저장하는 )
데이터의 생성(created_at), 수정(modified_at) 시간 을 저장합니다.
( e.g 포스팅, 게시글, 댓글 에 시간)
각각의 Entity의 생성 수정 시간을 매번 작성하는건 너무 비효율적입니다.
아래 코드처럼 한수 있으나...
@Column(name = "date_time"......)
private LocalDateTime time;
time = LocalDateTime.now();
ENTITIY 가 갯수가 증가하면 작성할 코드가 너무 많아짐.
그래서 JPA Auditing 적용하기 (시간 저장하는 )!~
1. 새로운 객체를 만든다 (TimeStamped.java) (Entitiy 패키지에 넣음).
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class TimeStamped {
@CreatedDate
@Column(updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime createdAt;
@LastModifiedDate
@Column
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime modifiedAt;
}
@MappedSuperclass
해당 클래스를 상속할 겨우.
클래스 안에 선언한 멤버 변수를 Column 으로 인식해줌.
Entitiy Class 의 상속이라고 보시면 됩니다.
(abstract 하는 이유는 이 클래스/객체 자체를 사용할 일은 없음)
@EntityListeners(AuditingEntityListener.class) : Auditing 기능을 포함시킴. 자동으로 시간 넣어주기
@CreatedDate : 객체가 생성될때 시간 값이 자동으로 저장.
@Column(updatable = false) : Column 인데 업데이트 안되게.
@LastModifiedDate : 조회한/변경 된 시간이 자동으로 저장.
@Temporal(TemporalType.TIMESTAMP) : java 의 객체 , date ,time ,timestamp 타입들으 가져옴.
2. 메인 객체 (Main.java)안에 다 @EnableJpaAuditing 넣어주기.
@SpringBootApplication
@EnableJpaAuditing
public class MemoApplication {
public static void main(String[] args) {
SpringApplication.run(MemoApplication.class, args);
}
}
3. 원하는 Entity 객체 안에 상속하기 (extends TimeStamped.java)
public class Memo extends TimeStamped {
4. ResponseDTO 에다가 해당하는 createdAt modifiedAt 을 넣어주기.
public class MemoResponseDto {
private Long id;
private String username;
private String contents;
private LocalDateTime createdAt;
private LocalDateTime modifiedAt;
생성자에도 setting 해주기
public MemoResponseDto(Memo memo) {
id = memo.getId();
username = memo.getUsername();
contents = memo.getContents();
createdAt = memo.getCreatedAt();
modifiedAt = memo.getModifiedAt();
}
'Spring' 카테고리의 다른 글
| Spring 숙련 1 (Bean을 수동)(복수Bean 타입)(인증 과 인과) (6) | 2024.01.24 |
|---|---|
| Spring 기초 11(마지막) (Spring Data JPA 의 Query Methods) (0) | 2024.01.21 |
| Spring 기초 9 (Spring DATA JPA + 기능들) (0) | 2024.01.21 |
| Spring 기초 8 (SpringBoot 의 JPA) (0) | 2024.01.21 |
| Spring 기초 7 (Entitiy 상태) (Entitiy 영속/비영속 기능) (0) | 2024.01.20 |