일정 관리 앱 develop 11

Spring 본캠프 Day 073 - 6단계, 7단계, 8단계 일정 관리 앱 Develop 완료! 이제 남은 과제는 문서 더미에서 빠져나오기!

어제 도전 과제 6단계를 해내길 정말 잘했다! 왜냐하면 아침부터 추가로 구현해야 하는 부분이 생겼기 때문이다! 바로 소프트 딜리트(Soft Delete), 일명 논리 삭제였다! 논리 삭제는 이름에서 알 수 있듯이 클라이언트(client)에게는 삭제되었다고 보여주고, 데이터베이스에는 그 정보가 그대로 있는, 말 그대로 '삭제된 척하는 삭제'였다.필수 과제 2단계부터 @ManyToOne 어노테이션(annotation)을 써서 단방향 연관관계를 설정해야 했는데, 그 상태에서 하드 딜리트(hard delete)를, 일명 물리 삭제를 하려고 하면 오류 메시지를 마주했다. 이 상태에서 정보를 진짜로 지우고 싶다면 cascade 옵션을 설정해야 하는데, 잠시 고민했다가 논리 삭제를 골랐다. 일단 정보 자체가 소중한 ..

Spring 본캠프 Day 072 - 4단계 및 5단계 일정 관리 앱 Develop 완료, 5단계 진행 중, 첫 쿠키(🍪) 생성 및 예외 처리

아주 예전에 '두 번 구운 과자'를 의미하는 이탈리아 전통 간식 비스코티(Biscotti)와 마카롱을 구운 뒤로 쿠키(🍪) 구울 일이 없을 줄 알았는데, 오늘 아주 원 없이 구웠다. 반환을 이상하게 해서 'redirect: /' 문자열이 그대로 출력되긴 했지만, 아무튼 굽긴 잘 구웠다. 정확히는 세션(session)을 생성했지만. 그 과정에서 수많은 문제를 일으키긴 했지만.개발 분야를 공부하는 지금은 모든 순간이 전부 새롭지만, 오늘은 그토록 시도하고 싶었으나 엄두조차 내지 못한 '예외 처리'를 해낸 날이라서 다양한 오류를 내고 캡처하길 반복했다. 매일 여백을 용납할 수 없다는 듯이 줄글로 나열된 오류 메시지가 깔끔하게 두 줄로 정리되니 속이 다 시원했다.'401 Unauthorized' 오류는 작성해..

Spring 본캠프 Day 071 - 2단계 및 3단계 일정 관리 앱 Develop 완료, 4단계 진행 중

🥇 @transactional 어노테이션(annotation) 복습하기 ▶ 내용 교차 검증 완료, 트러블슈팅(troubleshooting)에 기록 예정 🥈 '일정 목록이나 단건을 조회할 때 사용자의 Id도 같이 보여주면 어떨까?' 고민 해결하기 ▶ 사용자의 Id뿐만 아니라 비밀번호를 제외한 정보까지 응답으로 전달할 수 있도록 코드 수정 완료 🥉 "Query did not return a unique result" 오류 제대로 해결했는지 튜터님께 검사받기 ▶ 사용자의 이름 대신 Id로 정보를 조회하여 동명이인 문제 해결 완료 4️⃣ ERD(Entity Relationship Diagram) 작성 시 참조하는 객체는 어떻게 명시해야 하는지 알아 오기 ▶ 외래 키(Foreign Key)를 ERD 안에 적..

Spring 본캠프 Day 070 - 2단계 일정 관리 앱 Develop 진행 중

내용 정리를 틀리게 할 수 없어서 비공개로 돌린 트러블슈팅(troubleshooting)만 벌써 두 개째다. 아직 오류가 발생할 때면 '이번엔 또 뭘 잘못 입력했을까?' 온갖 생각이 들곤 하지만, 확실히 오류를 다양하게 내고 나니 비슷하거나 동일한 오류가 발생하면 금방 해결했다. 마치 오답 노트에 정리한 수학 문제를 다시 풀면 맞출 수 있듯이. 모든 오류의 원인과 해결 방법을 머릿속에 차곡차곡 정리해 두면 정말 좋겠지만, 기억 용량에는 한계가 있기 마련이므로 문제 해결 과정 기록에정성을 쏟았다. 그래, 오류의 가호도 제대로 받았겠다.  난생처음 보는 오류를 많이 내야겠다. 몸이 평일 내내 부족한 잠을 주말 동안 보충할 생각이었는지 오늘도 한낮에 일어났다. 내일부터 다시 아침 8시 전에 일어나고 싶은지라..

2단계: "SQL Error 1049: Unknown database"

[인용 및 참고 자료 출처]1. 구글 검색: 티스토리, "spring.jpa.hibernate.ddl-auto=create", ddl-auto 설정 시 주의 사항, (2024.12.15) [문제]이젠 프로그램을 실행할 때 오류가 안 나면 이상할 지경이다. 데이터베이스(database)를 제대로 생성한 줄 알았는데 아니었다. 오류 메시지를 볼 때마다 심장은 아직 철렁거리긴 하나, 이미 전날 새벽에 데이터베이스와 씨름한 전적이 있는지라 담담한 마음으로 데이터베이스를 확인했다. [원인]오류가 발생한 원인은 역시나, 데이터베이스가 이상하게 만들어진 데에 있었다. plans2라는 이름으로 데이터베이스를 만든 줄 알았는데 테이블로 생성되어야 할 'members2'가 데이터베이스로 있었다. [해결]문제는 금방 해결했..

1단계: "200 OK인데 왜 username이 null일까?"

[문제]400번 대이든 500번 대이든 오류 났다는 메시지가 뜨면 그나마 코드를 잘못 썼다고 짐작할 수 있는데, 200 OK 메시지와 다르게 입력한 값이 제대로 반영되지 않으면 더 골치 아팠다. null도 문제였으나, 수정됐다면서 일정 수정 날짜인 updatedAt의 값이 그대로인 점이 더 골치 아팠다. 도대체 원인이 뭔지 추측조차 못 한 채, '코드 또 전부 다 뜯어고쳐야겠구나.' 해탈한 심정으로 튜터님께 찾아갔다. [원인]package com.example.plan.plan.dto.request;import lombok.Getter;// 일정 수정 요청에 해당하는 request DTO@Getterpublic class UpdatePlanRequestDto { // (1) 속성 privat..

Spring 본캠프 Day 069 - 1단계 일정 관리 앱 Develop 완료, 2단계 진행 중

어제 새벽에 데이터베이스(database)를 직접 생성하다가 오류가 나서 딱따구리가 나무를 쪼듯이 챗GPT에 엄청나게 물어보고 나서야 해결했다. 데이터베이스가 제대로 삭제되지 않아서 생긴 문제였다. 혹시라도 비슷한 오류를 겪는 사람이 있을 수도 있고, 미래의 내가 또 같은 문제를 겪을 수 있으므로 문제 해결용 코드를 적어놓으련다. (1) MySQL 버전: 9.1.0(2) 윈도우/맥북: 맥북(3) 터미널에서 사용하지 않는 데이터베이스 삭제하기 ⓐ 위치 이동▼cd /usr/local/mysql/binⓑ MySQL 접속▼./mysql -u root -pⓒ 비밀번호 입력▼ ⓓ 데이터베이스 확인▼show databases;ⓔ 데이터베이스 삭제▼drop database 데이터베이스이름;오늘 오후에 느지막이 일어나 ..

Spring 본캠프 Day 068 - 일정 관리 앱 Develop 1단계 진행 중

도전 단계까지 포함하여 총 8단계인 과제 중 1단계만 하는 중인데도 벌써 트러블슈팅(troubleshooting)으로 작성할 오류를 두 개나 냈다. 이번엔 낸 오류는 쉼표와 관련이 없지만 평소 쉼표를 깜빡해서 빨간 줄을 자주 마주하곤 했는데, 오늘부터는 쉼표를 맨 앞으로 옮기기로 했다. 튜터님께서 알려주신 방법인데, 이렇게 하면 쉼표를 빠뜨릴 일이 줄어들 거라고 하셨다. 확실히 앞에 쓰니 쉼표가 눈에 더 잘 들어오기도 하고, 앞에 쓸지 뒤에 쓸지 고민하는 그 몇 초 덕에 '쉼표 쓰기'를 더 잘 의식하게 되었다. 개인 프로젝트를 한 뒤로, 정확히는 스프링(Spring)을 공부한 뒤로 갖가지 오류를 내면서 유입 키워드에 오류의 비중이 커졌다. 트러블슈팅(trooubleshooting)을 작성할 땐 보통 해결..

1단계: "not-null property references a null or transient value"

[문제]'일정 관리 앱 Develop' 과제는 JPA를 활용해야 했다. 필수 과제 1단계에서는 일정을 생성, 조회, 수정, 삭제할 수 있도록 CRUD를 구현해야 했는데, 생성(Create)에 해당하는 C를 구현한 다음 프로그램을 실행하자, 바로 500 Internal Server Error 메시지가 떴다. 우선 null이 들어가면 안 되는 곳에 null이 들어가서 생긴 문제라 짐작했다. [원인]package com.example.plan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.data.j..

Spring 본캠프 Day 067 - 숙련 Spring 3주차 완강, "오류의 가호가 있기를!"

package com.example.board.repository;import com.example.board.entity.Member;import org.springframework.data.jpa.repository.JpaRepository;import java.util.Optional;// repository layer의 인터페이스(interface)public interface MemberRepository extends JpaRepository { Optional findById(Long id); /* [수정 전] findByIdInRepository(Long id) [수정 후] findById(Long id) */}어제 본 Error creating bean wit..