[인프런 워밍업 클럽 BE 0기] 2주차 발자국

[인프런 워밍업 클럽 BE 0기] 2주차 발자국

2주차에는 1주차에서 배운 내용들을 토대로 조금 더 많은 것들을 배워갈 수 있었다.

 

6일차

  • 스프링 컨테이너의 의미와 사용 방법

     

     6일차에는 스프링 컨테이너가 무엇인지, 그리고 어떻게 사용하는 지에 대해 알게 되었다. 우리가 1주차 학습 때 배웠던 Controller에서 3단 분리하여 만들어진 Service와 Repository를 받아오는 과정에서 스프링 빈으로 등록하여 사용하면 따로 연결을 시켜주지 않더라도 필요하면 가져와서 사용할 수 있다는 것을 알게 되었고, 우리가 만든 클래스나 메소드들을 직접 등록해보면서 스프링 컨테이너에 대한 이해를 높일 수 있었다.

 

  • 6일차 미션 (이전 미션에서 작성한 Controller코드 분리)

앞서 작성한 Fruit Controller 코드를 직접 분리하면서 좀 더 좋은 코드를 만들어 볼 수 있었다. 미션을 통해 따라치기만 했던 Service나 Repository 코드를 직접 작성해 보았고, 그 과정을 통해 Controller의 분리에 대해 조금 더 익숙해진 것 같았다. 그리고 @Primary 어노테이션이나 @Qualify어노테이션을 통해 두 Repository를 바꿔가며 작동시킬 수 있도록 코드를 작성해보면서 더 좋은 코드를 만들어 낼 수 있었다.

 

7일차

  • Spring Data JPA를 사용한 데이터베이스 조작

이제까지는 JdbcTemplate를 사용하여 직접 sql 쿼리문을 작성하고, 실행했는데 이러한 것들을 더 쉽고, 편리하게 사용하기 위해 Spring Data JPA에 대해 배웠다. 그 과정에서 JpaRepository의 메소드인 save, delete 등을 알 수 있었고, 확실히 직접 쿼리문을 작성하는 것이 아니라 메소드를 통해서 DB에 접근하여 조작하니 쿼리문의 오타로 인한 실수도 줄어들고, 코드 작성하는 시간도 줄일 수 있어 도움이 되었다.

 

  • 7일차 미션 (JPA 연습)

이제 총 7가지의 미션도 마지막에 다다랐는데 마지막은 Spring Data JPA를 사용하여 이제껏 만들었던 코드를 리팩토링 하는 것이다. FruitController의 각각 기능들을 직접 SQL 쿼리문을 작성하는 것이 아닌 JpaRepository의 메소드를 가져와서 사용함으로써 기능들을 구현해볼 수 있었다. 그리고 객체와 관계의 매핑을 뜻하는 ORM을 통해 우리가 작성한 테이블을 Entity코드와 매핑하여 여러가지 추가하면서 연결 시킬 수 있었고, 그 과정에서 조금 어려움을 겪었는데 어려움을 겪은 만큼 스스로 더 많은 것을 알게 되었다고 느낄 수 있어 좋은 경험이 되었다.

8일차

  • 트랜잭션과 영속성 컨텍스트

만약, 메소드를 실행하다가 도중에 문제가 발생하면 코드는 이제까지 실행한 구문들을 유지한 채 에러를 던지게 된다. 그렇다면 우리가 원하지 않았던 것들도 저장될 수 있는데 그것을 위해 트랜잭션과 영속성 컨텍스트에 대해서 배우게 되었다. 트랜잭션은 쪼갤 수 없는 업무의 단위로 모든 SQL이 성공하거나 또는 SQL이 하나라도 실패하면 원상태로 롤백시키는 것이다. 덕분에 도중에 에러가 발생하더라도 DB가 엉망으로 될 일이 사라졌고, 추가적으로 테이블과 매핑된 Entity 객체를 관리 및 보관하는 역할을 가진 영속성 컨텍스트에 대한 4가지 특수한 능력에 대해 알게 되었다.

9일차

  • 조금 더 복잡한 기능을 API로 구성하기

이제까지 유저 관련 API를 작성하며 DB, 스프링 컨테이너, JPA 등 여러가지 많은 것 들을 배웠는데 이제 지금까지 배운 내용들을 토대로 책 관련 API를 하나 씩 작성해보았다. 유저 API와 책 API는 기능이 다르기 때문에 유저에서는 없었던 여러 기능들을 구현해 볼 수 있었고, 강의를 보기 이전에 API를 먼저 만들어보고 비교 함으로써 부족한 부분이 무엇이고, 어떻게 작성하면 더 좋은 지에 대해 알 수 있는 좋은 기회였다.

10일차

  • 객체지향과 JPA 연관관계

마지막 10일차에서는 우리가 이제까지 배운 것들의 마무리 부분으로 조금 더 객체지향적으로 개발하는 방법에 대해 알게 되었다. 그 과정에서 JPA 연관관계의 추가적인 기능들인 1대1, 1대다, 다대다와 같은 것들을 알 수 있었고, 직접 연관 시켜서 코드를 작성해보니 생각하는 과정에서는 조금 머리가 꼬였지만, 최종적으로 만들고 나서 부터는 코드가 훨씬 가독성이 좋게 작성되었음을 볼 수 있었다. 그 후 이제까지 작성한 API들을 마지막으로 수정하면서 API 작성에 대한 내용들은 끝마치게 되었다.

회고

벌써 스터디에 참여하고 2주가 지났는데 2주전의 나와 비교하면 정말 하늘과 땅 차이인 것 같다. 1주차에서 부족한 부분들을 2주차에서 배워갈 수 있었고, 공부를 하면 할 수록 새로운 개념들이 나와 역시 개발자의 공부는 끝이 없다는 것을 뼈저리게 느끼는 중이다. 그래도 1주차에 비해서 조금 더 강의에 집중하고, 궁금한 부분들에 대해 더 찾아보고 공부하면서, 조금 더 성장한 느낌이 들었고, 마지막 3주차까지 끝나고 나면 얼마나 변해있을지가 점점 궁금해졌다. 이제 미니 프로젝트를 조금씩 준비하고 있는데 이제까지 열심히 공부한 내용들을 바탕으로 프로젝트 1단계에 만족하지 않고, 계속 공부하면서 최대한 많이 완성해보고 싶다.

댓글을 작성해보세요.