프로젝트/[Sleeper] 수면관리 어플리케이션(11)
-
URL 작성의 어려움 - HATEOAS
문제 상황 프로젝트를 진행하다가 URL 작성의 어려움을 겪었다. 내 프로젝트에는 Diary라는 엔티티와 Sleep이라는 엔티티가 있다. 그리고, 내가 작성하려는 URL에는 두 자원이 포함되어 있어야 한다. 하지만, 이 자원들은 내가 지금까지 작성해왔던 URI들과는 다르게 둘의 관계가 계층 관계가 아니라 서로 독립적인 관계이다. 따라서, 이러한 경우에는 '어떻게 URL을 작성하면 좋을 까?' 라는 생각에서 이 포스팅을 작성하게 되었다. 관련 개념 및 해결의 실마리 리소스가 단일 실제 데이터 항목을 기반으로 할 필요는 없다. 단순히 데이터베이스의 내부 구조를 반영하는 API를 만들지 마라! REST의 목적은 엔티티 및 해당 엔티티에서 애플링케이션이 수행할 수 있는 작업을 모델링하는 것입니다. 컬렉션 및 항목..
2023.01.01 -
날짜 시간 데이터 요청/응답 - ZonedDateTime
이번 프로젝트에서는 날짜 시간 데이터를 많이 다루고 있습니다. 저저번 포스팅과 마찬가지로, Postman을 이용하여서 요청을 받다가 아래와 같은 에러가 발생하였습니다. 현재 상황 @Getter @RequiredArgsConstructor @Builder public class SetTimeRequestForm { @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") private final ZonedDateTime setSleepTime; @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") private final ZonedDateTime setWakeTime; public static Sleep toEntity(ZonedDat..
2022.12.29 -
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause 에러해결
문제 발생 아래와 같은 에러가 발생했습니다... 2022-12-26 11:43:40.857 ERROR 11104 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException: null at econo.app.sleeper.web.diary.DiaryController.sav..
2022.12.26 -
날짜 데이터 요청, 응답 처리하기 - LocalDateTime Parsing
프로젝트를 진행하던 중, Controller 개발을 완료하고 테스트를 하려고 Postman으로 요청을 보냈는데.. 아래와 같은 오류메세지를 마주했다. 문제 발생 아래는 내 프로젝트 소스코드 중 일부이다. @PostMapping("/diaries") public ResponseEntity saveDiary(DiaryRequestForm diaryRequestForm, @SessionAttribute(SessionConst.LOGIN_USER) Object loginUser) { LoginUser loginUser1 = (LoginUser) loginUser; DiaryRequestForm diaryRequestForm1 = DiaryRequestForm.of(loginUser1.getUserId(), di..
2022.12.26 -
update는 setter()로 수정하는 건데, Entity에 @setter는 쓰지 말라고?
문제 발생 Entity를 수정하려고 하는 데, Entity는 DB와 밀접한 관련이 있고, @Setter를 사용하는 것은 값이 변화하는 지점을 예측하기 힘들기때문에 @Setter를 사용하는 것을 지양해야한다. 그렇다면, setter를 사용하지 않고 어떻게 Entity를 update할 수 있을까?? 문제 분석 먼저, 엔티티가 어떻게 수정되고 있는 지부터 알아보자!! 엔티티를 조회하는 쿼리를 실행시키면, 찾는 엔티티가 영속성 컨텍스트의 1차 캐시에 있다면 그 엔티티를 가져오고 만약 없다면, DB에서 조회한 후 1차 캐시에 저장하고 엔티티를 반환한다. 이때, JPA는 엔티티의 변경사항을 DB에 자동으로 반영하는 데 반영할 때 사용하는 메서드가 flush이다. flush 메서드를 사용하면, 스냅샷과 엔티티를 비교..
2022.12.24