Spring Boot JPA 게시판 LocalDateTime format 변경하기
by coco3o2021-12-02T16:23:47.960583
LocalDateTime에서 기본으로 적용되는 날짜 포맷이다.
T는 날짜 뒤에 시간이 있다는 것을 알려주는 ISO 날짜 형식이라고 한다.
저 T를 포함해 밀리세컨드 단위까지 보여지는 것이 눈에 거슬려 LocalDateTime format을 바꾸려 한다.
어떻게 할까 알아보던 중 예전에 썼던 글이 생각났고 이를 참고해 date format을 변경했다.
TimeEntity 변경 전
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class TimeEntity {
@Column(name = "created_date")
@CreatedDate
private LocalDateTime createdDate;
@Column(name = "modified_date")
@LastModifiedDate
private LocalDateTime modifiedDate;
}
1. LocalDate로 변경
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class TimeEntity {
@Column(name = "created_date")
@CreatedDate
private LocalDate createdDate;
@Column(name = "modified_date")
@LastModifiedDate
private LocalDate modifiedDate;
}
필자는 시간을 제외한 날짜만 보여주고 싶었기에 LocalDateTime가 아닌 LocalDate로 변경 해줬다.
이제 T를 포함한 밀리세컨드 단위가 보이지 않는다. 하지만 yyyy-MM-dd 가 아닌 yyyy.MM.dd로 보여주고 싶었다.
뭔 차이가 있나 싶지만 아무튼 그렇게 바꾸고 싶었다.
LocalDateTime format을 지정하는 형식은 아래와 같다.
String dateFormat = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"));
그래서 다음과 같이 TimeEntity를 수정했다.
2. String 타입 변경
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class TimeEntity {
@Column(name = "created_date")
@CreatedDate
private String createdDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy.MM.dd"));
@Column(name = "modified_date")
@LastModifiedDate
private String modifiedDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy.MM.dd"));
}
format을 지정하는 형식을 String 타입 변수에 바로 대입했다.
이렇게 하면 DB 컬럼의 데이터 타입은 DATETIME(LocalDateTime) > DATE(LocalDate) > VARCHAR(String) 으로 변경된다.
잘 바꼈나 확인해보니 내가 만든 포맷으로 적용이 안됐고 아래와 같은 형식으로 바뀌었다.
다행히 몇번의 구글링을 통해 해답을 찾았다.
이는 EntityListeners를 통해 해결할 수 있었다.
3. EntityListeners의 @PrePersist 와 @PreUpdate 추가
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class TimeEntity {
@Column(name = "created_date")
@CreatedDate
private String createdDate;
@Column(name = "modified_date")
@LastModifiedDate
private String modifiedDate;
@PrePersist
public void onPrePersist(){
this.createdDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy.MM.dd"));
this.modifiedDate = this.createdDate;
}
@PreUpdate
public void onPreUpdate(){
this.modifiedDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy.MM.dd"));
}
}
@PrePersist : 해당 엔티티를 저장하기 이전에 실행된다.
@PreUpdate : 해당 엔티티를 업데이트 하기 이전에 실행된다.
날짜 값이 원하는 형식대로 적용되었다.
'📌ETC > Development Log' 카테고리의 다른 글
Mustache CSRF 적용 및 문제해결 (0) | 2021.12.14 |
---|---|
Spring Boot JPA 게시판 Security 회원가입,로그인 구현 (5) | 2021.12.13 |
Spring Boot JPA 게시판 검색 기능 & 검색 페이징 구현 (3) | 2021.11.25 |
Spring Boot JPA 게시판 페이징 처리 구현 (0) | 2021.11.23 |
Spring Boot JPA 게시판 조회수 기능 추가 (7) | 2021.11.20 |
블로그의 정보
슬기로운 개발생활
coco3o