-
1/12 TIL | 쉼표 작업 일지 #21. @ElementCollection과 @AttributeOverride (feat. ChatGPT)📝 기록/작업 기록 2023. 1. 12. 23:53
🔙 이전 시리즈
작업 회고
어제 TIL에서 적었듯이 오늘은 프로그램 Entity를 대공사하였다. 그렇게 완성된 모델들은 아래와 같다.
그러다가 데이터로 배열 형태의 값을 저장해야 하는 상황을 마주하게 되었다. 프로그램에서 제공되는 서비스와 이용 규칙들은 하나의 값이 아닌 여러 값이 배열로 존재해야 하는데, RDB에서는 컬렉션과 같은 형태의 값을 저장할 수 없어서 @ElementCollection이라는 어노테이션을 사용해야 했다.
요새 잘 쓰고 있는 ChatGPT에게 @ElementCollection에 대해서 물어보았더니 아래와 같이 대답해 주었다.
이걸 더 자세히 알기 위해서는 JPA에서의 데이터 타입에 대해서 한번 정리해야겠다는 생각을 했고, 이 어노테이션만 붙이면 해결되어 우선은 이렇게 붙이고 넘어가도록 한다.
제공하는 서비스의 경우 중복되면 안 되기 때문에 Set으로 관리하기로 하였고, 규칙의 경우에는 호스트가 등록하는 멘트들이 담겨 있어야 해서 String 타입의 List로 관리하기로 하였다. 이 리소스가 쓰이는 곳을 화면으로 보자면 아래와 같다.
그러고 나서 이용 규칙에 체크인과 체크아웃의 경우에도 Time이라는 Value Object를 만들어서 해당 타입을 사용하기로 하였는데, 정확하게 체크인 시작 시간(checkInStart), 체크인 끝나는 시간(checkInEnd), 체크아웃 시간(checkOut) 이렇게 총 3개의 컬럼이 필요했다. 그리하여 하나의 타입을 사용해서 DB에 저장되는 컬럼을 여러 번 새롭게 네이밍을 해줘야 했는데, 그러기 위해서 사용해야 하는 어노테이션이 @AttributeOverride였다. 역시나 ChatGPT에게 다시 설명을 요청했고, 대답은 아래와 같다.
무튼 그리하여 아래와 같이 하나의 타입으로 총 3개의 이름의 컬럼을 만들 수 있었다.
확실히 프론트보다 백엔드 작업 속도가 느리긴 한데.... 물론 빠르게 작업하는 것도 중요하다! 다만 이번 포트폴리오 작업 기간 동안 내가 중요하게 생각하는 것은 그간 배운 내용을 토대로 심화된 개념들을 더 찾아보면서 앞단과 뒷단의 개념들과 이 둘의 각각의 플로우와 연결되는 플로우를 모두 내 것으로 소화시키는 것에 있기 때문에 천천히, 제대로 가져가보도록 하자.
요 며칠 점심을 샐러드로 먹게 되면서 가볍게 먹은 덕분인지 오후에도 작업이 잘 되는 거 같다. 이렇게 컨디션 조절과 내 마음을 잘 살펴보면서 작업들도 차근차근 해나가보자. 오늘도 고생 많았고, 내일도 파이팅이다!💪
'📝 기록 > 작업 기록' 카테고리의 다른 글
1/17 TIL | 쉼표 작업 일지 #23. 세부 태스크 잘게 쪼개기! (0) 2023.01.17 1/16 TIL | 쉼표 작업 일지 #22. 프로그램 상세 Backdoor API 구현과 5주차 스프린트 시작. (0) 2023.01.16 1/11 TIL | 쉼표 작업 일지 #20. 프로그램 Entity 대공사 착수🚧 (0) 2023.01.11 1/10 TIL | 쉼표 작업 일지 #19. 프로그램 상세 페이지 UI 완성. (0) 2023.01.10 1/9 TIL | 쉼표 작업 일지 #18. 상세 페이지 작업과 4주차 스프린트 시작. (0) 2023.01.09