여느 때와 같이 김영한 님의 스프링 인강을 듣던 와중 이런 말씀을 하셨다
"가끔은 쉼과 응축이 필요하다. 다음 목표를 위한 정리의 시간이 필요하다."
현재 백엔드 전향을 꿈꾸고 4달째 달려온 나지만 과연 어디까지 왔고
어디를 향해 달려가는지 확인해 볼 필요가 있다고 생각했다.
선요약
- 객체지향의 핵심인 책임, 역할, 협력에 따라 코드를 분리하였다.
- Spring의 기초에 대해 알고 Spring-web, Spring-db에 대해 공부하였다.
- JPA의 기초에 대해 알고 사이드 프로젝트에 도입해 봤다.
- SQL, MySQL, DB에 대한 기초지식을 공부했다.
지금부터 하나씩 풀어가보자
객체지향
지금까지 SOLID나 클린 아키텍처 책만 읽고 객체지향을 공부했지만 진정한 객체지향에 대해서는 알지 못했다.
오브젝트, 객체지향의 사실과 오해라는 책을 읽고 객체지향은 무엇이고 왜 사용하는지 어떤 이점이 있는지에 대해서
알게 되었다.
책임, 역할, 협력 그리고 객체지향에 대해 알고 있었던 오해를 깨닫고
추상화와 비즈니스로직에 본질을 찾게 되었다.
대표적으로 객체지향에 대해서 잘못 알고 있던 것은
객체의 프로퍼티가 존재하고 메서드가 존재하는 것이 아닌
메서드를 보완해 주기 위해 프로퍼티(상태)가 존재하는 것이었다.
그렇기 때문에 프로퍼티는 감춰져야 하며 불변이어야 한다.
그렇지 않으면 객체의 역할을 수행하지 못하고 안전하지 못하기 때문이다.
이론으로 먼저 배웠지만 사이드 프로젝트를 작업하며 백엔드 개발자분에게 배우면서
더 잘 알게 되었다.
Spring
백엔드 개발자를 위한 Spring의 가장 큰 축인 Spring-MVC(Web)과 Spring-DB를 공부하였다.
Spring을 배우기 전 내가 생각한 Spring은 커다란 DI 컨테이너라 생각했다.
하지만 Spring은 생각보다 많은 기능을 지원하고 Web과 DB부분에서 특히 더 많은 기능을 지원한다.
특정 웹 요청을 처리하고 요청으로 들어온 객체를 매핑하거나 Json파싱, Error Handling, ModelView 생성
다양한 요청에 따른 핸들러 탐색 등등 많은 기능을 지원했다.
DB부분에서는 AOP를 이용해 트랜잭션 관리, Jdbc를 보다 쉽게 사용할 수 있게 해 주며,
JPA나 Jdbc와 같은 데이터베이스 접근 기술에 의존적이지 않은 Error Handling... 많은 기능을 지원했다.
그리고 가장 놀란 점이 Spring은 높은 수준의 추상화로 이뤄져 있다는 것이었다.
요청값을 파싱 하거나 요청을 처리할 컨트롤러를 찾는 로직마저 인터페이스로 정의되어 있고
해당 요청을 처리할 수 있는 구현체를 찾아 사용하는 것이었다.
그리고 개발자가 정의되어있지 않은 특정 요청을 처리해야 할 경우
직접 해당 인터페이스를 구현해 Bean에 등록하면 된다.
OCP를 깔끔하게 구현한것이었다.
JPA
Java 백엔드 개발자는 객체지향적인 코드를 짜서 관계형 DB에 데이터를 넣는다.
객체지향과 관계형은 많이 다르다(참조, 외래키). 그런 패러다임의 불일치를 해소하기 위해
ORM 기술이 나오게 되었고 JPA가 나오게 되었다.
JPA는 객체지향 객체를 관계형 엔티티로 쉽게 변경해주며 역으로도 쉽게 변경해준다.
즉 Java 개발자가 신경을 덜 써도 된다. (그렇다고 SQL이나 DB를 완전히 몰라도된다는 말이 아니다)
영속성 컨텍스트(1차캐시, 쿼리 저장소)를 배우고 JPA의 객체 관리방법 등을 배우며
더 깊게 배워보고 싶다는 생각이 들었다.
이전이었으면 Jdbc를 사용하거나 Mybatis같은 기술들을 사용해야했지만
JPA로 보다 비즈니스 로직에 신경을 많이쓸 수 있게 되었다.
영속성 컨텍스트에 대해 더 깊이 분석할것이다.
DB
기존에도 DB나 MySQL에 대해 기본지식이 있다 생각했지만 2년 3년전의 이야기라 다시 공부를 하였다.
SQL에 대해 공부하고 현재 MySQL의 심화에 대해 분석중이다.
앞으로의 포부
DB와 JPA에 대해 보다 깊이있게 공부하고
기존의 안드로이드 프로젝트의 LocalDB를 Spring Server로 이전할것이다.
- 보다 촘촘한 테스트코드 작성
- 객체지향에 대한 깊은 이해, 코드로 풀어내는 능력
- 사이드 프로젝트
'일기 및 일상' 카테고리의 다른 글
| 2024년을 보내며 (3) | 2024.12.23 |
|---|---|
| 스타트업 면접 후기 (3) | 2024.11.21 |
| 2022년을 보내며 (0) | 2022.12.25 |
| 제 1회 빡코딩콘 후기 (0) | 2022.05.01 |
| 2021년을 보내며 (0) | 2021.12.26 |