[16번째 이야기] 항해 11일차, 프로그래밍 주차 끝

jae_s_a·2022년 9월 29일
0

항해99

목록 보기
13/15
post-thumbnail

1. 프로그래밍 주차

드디어 프로그래밍 주차가 오늘부로 종료됐다. 사실 이번 주차는 이만큼까지 시간이 많이 쓰일줄 몰랐고 이만큼까지 시간이 소요되리라고도 생각못했다.

암튼 13:00 ~ 17:00동안 알고리즘 시험이 진행되었고 1. 없는 정수 사이의 합, 2. 이상한 문자 만들기2, 3. 같은 단어는 싫어의 문제가 제시되었다.
3번이 대장 문제였고 실 데이터를 저장하는 것과 중복 데이터를 저장하도록 두 개의 ArrayList를 만들어서 구현했다.

엊그제 본 사전 테스트와 마찬가지로 문제 풀이 영상을 찍고 제출하는 것까지 해야 했는데 풀이를 하면서 든 생각이 알고리즘은 난이도가 쉽든 어렵든 풀고난 이후엔 문제는 어렵지 않았는데 접근이 어려웠다는 생각을 한다.

그리고 문제 풀이 영상 녹화 도중에 매니저님이 갑자기 내 이름을 부르시더니 말씀하시면 안된다고 하셔서 살짝 당황했는데 약간의 오해가 있었고,,,, 영상을 처음부터 다시 찍게되었다..ㅠ
오히려 문제를 푼 시간보다 영상을 녹화하고 제출하는 시간이 더 오래 걸렸다....

이렇게 프로그래밍 주차도 잘 마무리됐다.

01. 미니 프로젝트
02. 프로그래밍 기초
03. 주특기 주차 입문 (예정)
04. 주특기 주차 숙련
05. 주특기 주차 심화

2. 주특기 주차

까먹고 못썼는데 어제 오후에 결제한 자바 ORM 표준 JPA 프로그래밍(김영한 저자) 책이 점심쯤 도착했다.
대략 700페이지 분량으로 되어있고, 맞으면 아플 것 같은 두께이다.
내일부터 주특기 주차가 시작되는데 커리큘럼 중 JPA를 배울때 부족한 이론적인 내용을 책을 참고해서 보려고 한다.

오늘은 알고리즘 주차가 종료되어서 기쁜 마음에 붕떠서 목표한 만큼 공부하지 못했다.
회원/상품 섹션은 마무리했고, 도메인이 아닌 로직에 대한 부분은 아는 부분이 있어서 도메인에 비해 조금은 익숙해진 것 같다. 그리고 강의를 들으면서 기본편은 무조건 봐야된다는 생각이 강하게 들었다.
최근 글에 계속해서 나타나는데 영속성과 도메인에 대한 지식이 있어야 JPA를 온전히 이해할 수 있을 것 같다.

이건 별개로 H2 데이터베이스가 JVM으로 동작돼서 부트를 사용할 때 별도의 설정을 해주지 않으면 부트가 자동으로 메모리를 사용하도록 설정하는게 정말 정말 신기했다..
영한 님 강의로 DB 연결까지 해보진 못했지만 스프링 레거시로 오라클과 MySQL로 커넥션 해본 경험이 있는데 그 당시 Maven으로 해서인지 꽤 복잡한 과정을 거챴던 걸로 기억한다. 그런데 테스트 환경일 때 H2 데이터베이스를 사용하는 경우 부트가 메모리로 동작되게 해준다는 게 참 놀라웠던 것 같다.. (프레임워크 짱..)
H2 데이터베이스가 JVM으로 동작돼서 메모리를 사용할 경우 서버도 띄우지 않아도 되는 이점도 갖고.... JVM과 관련있다고 하니 동작원리를 찾아보면 꽤 재밌을 것 같다....!

현업에서는 그렇지 않지만 강의의 편의나 이해도를 높이기 위해 Setter를 쓴 것일 수도 있는데 오늘 강의를 들으면서 JPA를 사용하기 이전에 자바 프로퍼티 접근법(Setter/Getter)로 자주 접근을 했던 것 같은데 JPA는 그렇지 않다는 느낌을 받았다.

도메인을 사용하는 경우에는 Setter는 최대한 지양하고 별도의 메서드로 처리하는 것이 더 좋다. 그래서 Getter만 생성하고 stockQuantity에 대해 addStock, removeStock의 메서드를 만들어서 접근하는 것이 더 객체지향적인 방법이다.

사실 Setter에 대한 부분은 JPA뿐만 아니라 모든 객체에 해당하는 부분인지라 당연한 얘기일 것이다.
그리고 Setter를 사용해도 무방하겠지만 아마 이런 접근은 JPA의 개념에서는 도메인에 접근할 때 Bad Example이 될 것 같다는 생각이 들었다.
(💥 어디까지나 내 생각이고 추측이니 주의바람 💥)

스프링을 처음 배울 때 왜 3계층 구조로 나눴는지 왜 이렇게 해야하는지 단번에 이해하지 못했던 것처럼 결국 JPA도 1. 개념이해 > 2. 적용 > 3. 응용의 과정을 거쳐야 이해하게 될 것이다.

.. 어쩌다 여기까지 얘기를 하게된 건지 모르겠다.


오늘 우연찮게 좋은 문구가 적힌 포스팅을 봤는데,

과정에 대한 완성은 끊임없이 시도하는 것이다.
결과에 대한 완성은 미완성들이 과정에 쌓이며 결과를 만들어 낸다.

결국엔 끊임없이 시도하다보면 결과를 만들어낼 것이라는 말이고 나는 이 맣을 믿어 의심치않다.
⭐⭐ 꾸준함의 힘을 믿고있다!! ⭐⭐

3. 앞으로

지난 [회고] 07에서 절대 할 수 없는 방대한 양의 목표를 세워뒀고 한 주차에 3~4개만 끝내야지 라고 생각했다.
근데 내 것으로 온전히 받아들이고 다른 사람에게 설명하고 포스팅까지 할 수 있을만큼 시간을 낼 수 없었다.

다만 어찌됐던간에 항해를 하는 기간동안엔 누구에가나 시간이 부족한 건 마찬가지다.
근데 언젠간 꼭 해야하는 부분이기에 매일 시간이 정해둔다던지 요일에 몇 개를 정해서 매일 조금씩이라도 시간을 투자해서 하나씩 지워나갈 수 있도록 다시 생각해봐야겠다.

내일은 9시에 주특기 발제가 있고 주특기 첫 날이라 또 어떤 변수가 생길 지는 모르지만 노션에 정리해둔 스프링 핵심 원리 - 기본편을 쭉 한 번 읽어보고 영속성과 도메인에 대해 기본개념을 먼저 찾아볼 생각이다.
앞으로 QueryDSL이나 Data JPA 등 수없이 많은 기술들을 배우겠지만 최대한 본질에 익히는데에 집중하자.


지치고 힘들 때마다 니체의 말을 떠올리자.

나를 죽이지 못하는 고통은 나를 더 강하게 만든다.
나를 죽이지 못하는 고통은 나를 더 강하게 만든다.
나를 죽이지 못하는 고통은 나를 더 강하게 만든다.
나를 죽이지 못하는 고통은 나를 더 강하게 만든다.

profile
if not now, when

0개의 댓글