Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- pointcut
- Thymeleaf
- jpa
- transaction
- QueryDSL
- Exception
- 백준
- 스프링 핵심 원리
- db
- springdatajpa
- Proxy
- java
- Android
- http
- JPQL
- Greedy
- kotlin
- Spring Boot
- 스프링
- 스프링 핵심 기능
- Servlet
- JDBC
- SpringBoot
- AOP
- 인프런
- 김영한
- 알고리즘
- spring
- 자바
- 그리디
Archives
- Today
- Total
개발자되기 프로젝트
Listener, Formatter 사용 본문
1. Listener
- 이벤를 관찰하고 있다가 발생하면 특정 메서드를 실행.\
- 이를 활용해서 entity의 생성시간(@PrePersist), 수정시간(@PreUpdate)를 생성하자.
- Listener를 직접 만들어서 사용할 수 도 있음.
- 또는 스프링이 제공하는 리스너를 사용할 수도 있다.
2. 스프링이 제공하는 리스너 사용.
2.1 Application
- @EnableJpaAutditing
@SpringBootApplication
@EnableJpaAuditing
public class BlogApplication {
public static void main(String[] args) {
SpringApplication.run(BlogApplication.class, args);
}
}
2.2 Entity
- @EntityListeners : 해당 엔티티에 사용할 Listener 등록
@Entity @Getter
@EntityListeners(value = AuditingEntityListener.class)
public class Member {
@Entity @Getter
@EntityListeners(value = AuditingEntityListener.class)
public class Post {
@Entity
@Getter
@EntityListeners(value = AuditingEntityListener.class)
public class Comment {
2.3 @Annotation 지정
- Member, Post, Comment 동일.
@Entity @Getter
@EntityListeners(value = AuditingEntityListener.class)
public class Member {
@Id @Column(name = "MEMBER_ID")
@GeneratedValue
private Long id;
/**
* em.persist()전에 호출됨.
*/
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
3. 결과
- 오 시간이 잘 들어간다.
4. 추가 수정
- 생각해보니 현재 뷰에, 글 마지막 수정시간, 댓글 마지막 수정시간이 안들어가있다.
- 뷰에 반영할 수 있도록 코드를 수정하자.
- 각 DTO에 LocalDateTime lastModifiedDate를 추가해줬다.
- view에서는 th:text를 이용하여 해당 파라미터를 사용.
- 다 좋은데 날짜 형식이 맘에 안든다....
5. 스프링이 제공하는 Formatter 사용
- @Annotation기반으로 작동.
- Converter: 범용 Type 변환
- Formatter: 문자 위주, 출력 형식을 변환
- Thymeleaf에서 ${{...}}를 사용하면 Thymeleaf에서 제공하는 기본 format사용 가능.
- 21.10.7. 오후 10:00 과 같은 형식
- 만약 형식을 변경하고 싶으면 DTO의 해당 파라미터에 annotation 적용
- dto에 적용하는 이유는 dto가 view로 넘어가기 때문.
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastModifiedDate;
6. 수정 결과
- 글 목록, 글 상세 화면에서 작성/수정일자 확인 가능
7. 앞으로..
Test용 data 서버시작할 때 DB에 올리기Listener
createdAt, updatedAt등
게시글에 작성자 표시- 댓글 삭제 버튼
- 대댓글
- 검증 & 예외처리
- 회원 가입시 필수 정보 지정.
- 데이터 타입 지정
- 인증처리
- 로그인한 사용자만 글 & 댓글 작성 가능.
- 본인이 작성한 글, 댓글만 삭제 가능
- 관리자는 모든 권한
- 예외처리
- 페이징 처리
- 컬렉션 조회 최적화
8. GitHub: 211007 lastModifiedDAte
'Project > 블로그 게시판 만들기' 카테고리의 다른 글
글 삭제하기, cascade, orphanRemoval, 영속성 전이 (0) | 2021.10.09 |
---|---|
검색기능 추가 및 view 정비 (0) | 2021.10.09 |
글 상세 페이지에 작성자 추가 (0) | 2021.10.07 |
Test용 데이터 추가 (0) | 2021.10.07 |
현재까지 진행 상황 (0) | 2021.10.06 |
Comments