생성시간 Entity 관리
투두작성, 댓글작성 시 공통적으로 생성시간이 필요했는데 이걸 하나의 Entity 로 만들었다.
@어노테이션
@MappedSuperclass // JPA
: 해당 클래스를 상속받을 경우 필드를 Column으로 인식하도록!
@EntityListeners(AuditingEntityListner.class) // spring data JPA
- AuditingEntityListener : JPA 내부에서 Entity 가 생성, 변경되는 것을 감지
@CreatedDate/ @ModifiedDate // spring data JPA
@EnableJpaAuditing // spring data JPA
: application 클래스에 추가, JPA Auditing 기능을 활성화
❓JPA Auditing
특정 작업 수행시 항상 필요한 로직과 엔티티 내의 코드 중복을 피할 수 있다.
@EntityListeners()
감시할 entity 등록
@Pre/Post Persist/Update/Remove/Load
함수를 이용해 작성하는 번거로움을 줄이기 위해
@EnableJpaAuditing
application 클래스에 추가
❓Spring Data Jpa Auditing
자주 사용되는 특정 작업에 대해 추상화된 기능 제공
@CreatedDate @LastModifiedDate @CreatedBy @LastModifiedBy (생성자 수정자는 추가 작업 필요)
기본값 var 선언
: 기본값을 넣어주었더라도 Data Jpa Auditing 내부적으로 숨겨진 어노테이션에서 프로퍼티에 접근변경하기때문
DB에 이미 저장되어있는 값의 시간날짜 형식과 불러오려는 때에 지정된 형식이 다르니 bad value라며 오류가 발생해서 기존 데이터 삭제 후에 정상적으로 조회할 수 있었다.
삭제성공메시지
controller에서 삭제 처리후
body 에 삭제성공메시지를 넣어주었다.
@DeleteMapping("/{commentId}")
fun deleteComment(@PathVariable cardId: Long,
@PathVariable commentId: Long,
@RequestBody deleteCommentRequest: DeleteCommentRequest
): ResponseEntity<String> {
cardService.deleteComment(cardId, commentId, deleteCommentRequest)
val deleteSuccessMessage = "댓글이 성공적으로 삭제되었습니다."
return ResponseEntity
.status(HttpStatus.NO_CONTENT)
.body(deleteSuccessMessage)
}
아무것도 안 뜬다...메시지를 어떻게 띄우지?
=>
@DeleteMapping 은 기본적으로 상태코드를 No_CONTENT 로 설정한다.
이 경우 Response body 가 비어있게 된다.
상태코드를 OK 로 지정한 후 다시 실행해보았다.
정상적으로 메시지가 뜬다.
투두 STEP2 채워넣을 것
- 처음 설계한 API 명세서에 변경사항이 있었나요? 변경 되었다면 어떤 점 때문 일까요? 첫 설계의 중요성에 대해 작성해 주세요!
- ERD를 먼저 설계한 후 Entity를 개발했을 때 어떤 점이 도움이 되셨나요?
- 만약 댓글이 여러개 달려있는 할일을 삭제하려고 한다면 무슨 문제가 발생할까요? Database 테이블 관점에서 해결방법이 무엇일까요?
- IoC / DI 에 대해 간략하게 설명해 주세요!
투두 STEP3 고민
1. 할 일 목록에서 작성일 기준 오름차순, 내림차순 정렬 기능 추가
- api를 요청할 때 정렬 기준(오름차순, 내림차순)을 포함하기
- 정렬 기준을 통해 정렬한 할 일 목록 반환하기
목록 조회면 전체 조횐데 어느 기준으로 정렬할건지 값을 받아야 하나?
그러면 nullable 한 값으로하고 디폴트는 정해놓는 식으로 해야할까
2. 할 일 목록에 작성자 기준 필터 기능 추가
- api를 요청할 때 작성자 이름을 포함하기
- 작성자 이름이 일치하는 할 일 목록 반환하기
마찬가지로 이름을 받아도 되고 안 받아도 되고
안 받으면 전체 목록 조회
3. 할 일 작성, 수정시 validation 추가
- 제목 1자 이상 200자 이내 검사
- 본문 1자 이상 1000자 이하 검사
- 조건 불충족 시 기능 실패 응답
제목본문검사 조건 추가!
4. ResponseEntity 로 적절한 응답코드 반환
챌린지반 2주차
숙제
Spring Security 네이버 로그인 추가
Spring Security 없이 카카오/ 네이버 로그인 구현
다른 소셜 로그인이 추가될 수 있도록 유연한 코드 작성(Service 코드 불변)
OAuth 까지는 어찌어찌 이해했는데 security 가 더 어렵게 느껴지는 이유는 뭘까 .!
'왕초보일지' 카테고리의 다른 글
240104 TIL | (2) | 2024.01.04 |
---|---|
240103 TIL | step1피드백, step2정리, step3 (0) | 2024.01.03 |
231230 | TIL (0) | 2023.12.30 |
231229 TIL | 스프링 부트 3 기본 지식 (2) | 2023.12.29 |
231228 TIL | (0) | 2023.12.28 |