본문 바로가기

소프트웨어,IT,컴퓨터공학 도서리뷰/네트워크 & 인프라 & DB

JPA 퀵스타트 [6/7] -채규태 지음- [루비페이퍼] [JPA책 추천] [2022]

Java Persistence API Quick Start.

스프링 부트 퀵 스타트 다음 JPA 퀵 스타트

채규태 저자님의 책은 안정적이고 꼼꼼하다.

스프링 부트 퀵스타트에서도 느낀 안정감을 해당 책을 읽었을 때에도 느낄 수 있었다.

 

꼼꼼한 예제와 혹시 모를 예외 상황에 대한 부가적인 설명과 가이드라인으로 친절한 안내가 담긴 책이다.

[ 어디에서 실수가 자주 일어날 수 있는지를 어떻게 아시는지 궁금하다. ]

 

JPA관련 책은 대표적으로 3권이 있다.

- 김영한 저자님. (가장 유명한 책)

- 최범균 저자님.

- 채규태 저자님. 이렇게 세명이 쓴 책이 존재한다.

 

스프링 Data JPA 모듈에 대한 정보가 있으면서 최신에 나온 책이기에 해당 책을 골랐다.

 

책은 670페이지 정도... 예제가 많아서 페이지가 많다.

 

눈으로 이해할 수 있는 예제는 넘기는 식으로 읽으면 빠르게 읽을 수 있으니

 

책의 페이지에 압도될 필요는 없다고 생각한다.

[ 모든 예제를 따라 한다면 시간을 꽤나 투자해야 할 것이다. ] 

 

 

추천도 : 6/7 [ 난이도 있는 예제가 진행되지 않아서 아쉽다. ]

★★★★★★☆

읽은 기간 📅 : 2021년 12월 10일 ~ 2022년 1월 17일.

 

이 책을 추천하는 이들 👨‍👧

  • JPA 관련 책을 찾고 있는 사람들.
  • 마이크로 서비스 아키텍처를 공부하는 사람들
  • 스프링 부트를 다루는 사람들.

 

난이도 🦈

중하. [ 데이터베이스에 대한 지식 + 스프링에 대한 경험 + SQL 경험이 필요하다고 생각! ]

 

관련된 책들 📚

  1. 스프링 부트 퀵스타트 [ 스프링 프레임워크를 편하게 사용할 수 있도록 돕는 프로젝트 ] 
  2. 파워 오브 데이터베이스 [ DB 설계에 대하여.. ]
  3. SQL 관련 책

한 줄 평 ✍️

데이터의 영속성을 다루는 기능의 편리성이 발전하고 있다는 것은 분명하다.


JPA에 대한 경험.

 

처음 프로토타입 웹 애플리케이션을 개발했을 때 JPARepository<Entity, ID>로 DB에 접근했다.

 

스프링 부트 책에 있는 프로젝트를 따라 하면서 DB를 스프링 데이터 모듈이 제공하는 CRUD 인터페이스로만 다뤘던 것이다.

[ 그때는 진도를 빠르게 나가는 것에 집중해서 "왜", "어떻게" 가능한 것인지에 대한 의문을 두지 않았었다.

그냥 기술의 진보려니 하고 넘겼었다. ]

 

그렇게 Spring Data JPA 모듈을 이용해 쉽게 데이터베이스를 다룬 경험으로

 

간단하게 2~4개의 테이블만 다루는 JPA 토이 프로젝트만 진행했다. 

 

그러다 개인 프로젝트에서 JPA로 복잡한 쿼리를 만들어야 하면서 동시에 테이블 사이에 복잡한 관계가 필요한 상황이 오자 JPA로 데이터베이스를 다루는 영역에서 맨탈의 붕괴가 와버렸다.

 

구글링으로 땜질을 하려고 해도 근본적인 배경지식이 없으니까 계속 막막하기만 했다.

 

나중에 해결하고 보면 아니 이런 것 때문에 고통을 받았던가 하는 아쉬움이 생기게 되었다.

 

이후 개인 프로젝트를 끝내고 시간적 여유가 생겨서 JPA에 대한 공부를 해야겠다는 생각이 들었고 바로 도서관에 가서 해당 책을 대여했다.

 

추가로 데이터베이스 모델링과 설계에도 갈증이 생기게 되어서 해당 책도 대여했다.

[ 해당 부분은 파워오브 데이터베이스로 공부 중이다.]

 

이번 책을 통해 JPA를 다루면서 생기는 궁금증들이 대부분 해소되었다.

 

어떠한 원리로 영속성이 관리되고 있는지. JPA의 배경과 원리는 무엇 있지(어떻게 등장한 것인지).

 

ORM은 무엇인지. 객체지향에서 관계 지향적인 데이터베이스로 넘어가는 부분에서 어디에서 충돌되는 것인지 등등..

 

추가적으로 JPA를 사용하지 않는 프로젝트들(MyBatis, Ibatis 혹은 직접적으로 JDBC를 다루는)과의 비교를 통해

역사적인 관점을 얻을 수도 있었다.

 

자바의 객체와 테이블의 행(row)를 자동으로 매핑해주는 ORM 프레임워크인 JPA.

 

아직 대한민국의 개발은 MyBatis로 진행되는 경우가 많다고 하는데,

몇몇 스타트업이나 대형 IT 서비스 회사는 JPA로 움직이고 있다고 한다. [ 결국엔 편리함이 승리하게 될 것 같다. ]

 

내 추측으로는 그 배경에는 빠른 프로토타입 개발 방식 + 마이크로서비스 아키텍처가 있지 않을까 한다.

 

도메인 주도 설계에서 추구하는 마이크로 서비스(sub domain)의 애그리 거트(Aggregate) 단위로 DB를 관리하면

JPA의 유용성을 놀랄 만큼 좋아질 것이라 생각하기 때문.

 

진입 엔티티를 기반으로 세부 정보를 트리의 경로로 접근하는 방식으로 객체를 구성하면 객체를 우선으로 보고 DB를

모델링할 수 있기 때문이다.

 

이런 환경에서는 객체를 중심으로 보고 빠르게 JPA를 적용해 DB를 다루는 시간을 최소화할 수 있다.

 

결국엔 데이터베이스 모델링과 데이터베이스 활용.

 

스프링을 본격적으로 공부하기 시작했을 때 가장 소홀하게 공부했던 영역이 데이터베이스 영역이었다.

 

인프라 + 네트워크 + 프로그래밍 언어 + 소프트웨어 공학 + 웹 프레임워크를 위주로 공부했었다.

 

스프링 부트 책을 읽었을 때 쉽게 DB영역을 다뤘던 경험 때문인지.. 데이터베이스를 과소평가한 것이다.

 

1년 정도 지난 지금 데이터베이스의 중요성을 경험하고 있다.

 

어떤 책에서 읽었듯 데이터베이스도 설계에서 중요한 역할을 담당하고 그만큼의 시간과 고민이 필요한 영역이다.

 

영속적으로 관리되는 데이터는 애플리케이션 서비스의 혈액과도 같다.

 

혈액이 없으면 인간은 활동이 불가능하다. 마찬가지로 데이터가 없으면 서비스를 활용이 불가능하다고 말할 수 있다.

 

JPA 퀵스타트로 JPA에 전반적인 내용과 Spring Data JPA 모듈을 공부했다.

 

대체로 Spring Data JPA 모듈을 적극 활용하게 될 것 같은데, 이와 관련된 지식은 구글링이나 기술 블로그를 통해

 

실용적으로 공부해보고자 한다.

 

책이 두꺼워서 오래 걸리려나 고민한 책이나 생각보다 빠르게 읽혀서 다행이다.

 

 

 

반응형