해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)
수강 회고
이번 개인 학습 정리 주간 동안 목표했었던 것들 중 "하루에 한 번씩 30분씩 운동하기"가 있었다. 지난 2달(3~4월)간 운동을 하지 않다보니 점점 몸이 굳어가는 느낌을 받았기 때문이었다. 마스터즈 코스 과정을 수행하는 지난 1~2월간에는 어느 정도 운동을 했었지만 3~4월부터는 점점 미션 과제를 수행하느라 운동을 할 마음의 여유(?)가 생기지 않아 운동을 "거의" 안 했었다. 시간이 흐를수록 학습에 대한 조급함과 함께 마음의 여유를 잃었던 탓이었다.
그리하여 이번 주부터는 앞서 세운 목표대로 하루에 한 번씩 유튜브 홈트레이닝 영상을 통해 가벼운 운동을 하고 있는 중이다. 비록 웨이트 운동 같은 거창한 운동은 아니지만 일종의 생존(? 😂) 운동으로서 실천하고 있는 중인데, 확실히 가벼운 운동이라도 운동을 하고나니 몸도 한결 가벼워지고 정신도 맑아지는 느낌이다. (미션 과제를 안 하고 있어서 그럴수도??!!) 예전에 김영한님의 인프런 강의를 들으면서 김영한님께서도 퇴근 후에는 항상 30분 정도 달리기를 한다는 얘기를 들었다. 그만큼 바쁜 IT 인들에게 있어서도 (짧은 시간일지라도) 운동은 역시 중요하다는 생각이 들었다.
학습 회고
객체와 테이블 매핑을 위한 애노테이션
@Entity
@Entity가 붙은 클래스들은 JPA가 관리하므로 JPA를 사용해서 테이블과 매핑할 클래스들은 @Entity를 반드시 붙여야 한다. 이때 해당 클래스에는 기본 생성자(파라미터가 없는 public 또는 protected 생성자)가 필수로 있어야 한다. 아울러 final, enum, interface, inner 클래스에는 @Entity를 사용할 수 없으며 @Entity 클래스에서 테이블과 매핑할 필드에는 final 키워드를 사용하면 안된다.
@Table
@Table은 엔티티와 매핑할 테이블을 별도로 지정할 수 있다. 만일 생략 시에는 기본적으로 Entity 이름을 사용하게 된다.
데이터베이스 스키마 자동 생성을 위한 속성
persistence.xml 파일 properties 태그에 다음과 같은 태그 정보를 입력해주면 DDL을 애플리케이션 실행 시점에서 자동으로 생성해준다.
1. 기존 테이블을 삭제하고 다시 생성한다.(DROP + CREATE)
<property name="hibernate.hbm2ddl.auto" value="create" />
2. create 속성과 함께 추가적으로 종료 시점에 테이블을 삭제한다.(DROP + CREATE + DROP)
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
3. 기존 테이블에서 변경된 부분만 반영한다. 이때 기존 테이블 중 필드를 지우는 건 반영이 안되고 추가하는 것만 반영이 된다.
<property name="hibernate.hbm2ddl.auto" value="update" />
4. 엔티티와 테이블이 정상 매핑되었는지만 확인해준다.
<property name="hibernate.hbm2ddl.auto" value="validate" />
5. 스키마 자동 생성 기능을 사용하지 않는다. 이때 관례상 value를 none으로 입력한 것이지 해당 태그를 삭제(주석)하거나 매칭(matching) 되는 value가 없다면 스키마 자동 생성 기능을 사용하지 않게 된다.
<property name="hibernate.hbm2ddl.auto" value="none" />
※ 스키마 자동 생성 기능 사용 시 주의!!
운영 서버에서는 절대 create, create-drop, update에 대한 스키마 자동 생성 기능을 사용하면 안된다. 이러한 기능들로 인해 기존의 테이블이 삭제되거나 수정된다면 운영 상 치명적인 문제를 초래할 수 있다. 개발 초기 단계에서는 create 또는 update, 테스트 서버에서는 update로 설정해도 무방하다.
알고리즘 문제 풀이
어제 알고리즘 스터디에서 피오와 후가 추천(?)해줬던 알고리즘 문제를 풀어보았다. 처음 내가 이 문제에 접근했었던 방법으로는 구현 로직이 굉장히 복잡해져만 갔고 "이게 맞나?"라는 생각이 들면서 "발상의 전환"이 필요하다는 생각이 들었다. 곰곰이 생각해보면서 다시 한 번 문제에 접근해보았다. 알고리즘 문제 풀이에 대한 내용은 아래와 같이 별도 글로 정리해보았다.
학습 참고자료
- 인프런 "자바 ORM 표준 JPA 프로그래밍 - 기본편"
좋았던 점
- 알고리즘 문제를 풀면서 처음 접근했었던 방식으로 애를 쓰고 있다가 접근 방식을 바꾸어 보았더니 해결이 되어 뿌듯했습니다. 🥕
아쉬웠던 점
- 그동안 알고리즘 문제를 풀 때 너무 이론 공부 없이 풀었던 점이 아쉬웠습니다. 💦
이전 보다 개선되었던 점
- 1~2개월간 운동을 안하다가 이번주부터 저녁식사 후 꾸준하게 간단한 홈트레이닝(유튜브)을 하고 있는데, 그동안 찌푸둥 했었던 상태에서 한결 가벼워진듯한 느낌이 듭니다. ✨
'2022 Masters Course > Project Course' 카테고리의 다른 글
2022 마스터즈 코스(백엔드) 86일차 회고(2022. 5. 16.) - "2주차 개인 학습 정리 주간 시작" (0) | 2022.05.17 |
---|---|
2022 마스터즈 코스(백엔드) 85일차 회고(2022. 5. 13.) - "1주차 개인 학습 정리 주간 정산" (0) | 2022.05.13 |
2022 마스터즈 코스(백엔드) 83일차 회고(2022. 5. 11.) - "인프라 구축에 대한 관심" (0) | 2022.05.11 |
2022 마스터즈 코스(백엔드) 82일차 회고(2022. 5. 10.) - "꾸준함의 중요성" (0) | 2022.05.10 |
2022 마스터즈 코스(백엔드) 81일차 회고(2022. 5. 9.) - "방학 끝 그리고 심기일전" (2) | 2022.05.09 |