이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다.
JPA란?
Java Persistence API
JPA는 데이터베이스 기술이라기보다 애플리케이션의 데이터를 객체지향 관점으로 바라보고 다룰 수 있게 해주는 객체지향 기술이다.
-> JPA를 실무에 적용하려면 데이터를 객체지향적으로 다루는 방법과 함께 데이터베이스 성능을 고려한 설정 및 개발 방법을 반드시 함께 익혀야 한다.
- 이일민 / Epril 대표 컨설턴트, [토비의 스프링 3.1] 저자
순수 JDBC - 등록
- 초기에는 복잡한 JDBC API와 SQL을 한 땀 한 땀 직접 작성했어야 했다.
- 개발성 측면에서 매우 뒤떨어지는 방법이다.
JdbcTemplate
- JdbcTemplate과 같은 SQL Mapper가 등장해 개발 코드가 줄기는 했지만 아직 개발자가 SQL을 한 땀 한 땀 작성해야 한다는 문제점이 존재했다.
JPA
- JPA를 사용하게 되면 개발자가 SQL 조차도 사용할 필요가 없게 된다.
-> 개발 생산성이 증가한다.
-> 개발 속도와 유지보수성 측면에서 매우 효율적이다.
- JPA가 개발자를 대신해 적절한 SQL을 생성하고 저장하고 불러오는 역할을 수행해준다.
-> JPA를 조금만 학습해도 많은 단순 작업을 줄여 개발 시간을 단축할 수 있다.
+ JPA를 설계에 녹여 넣으면 복잡한 쿼리 대신 객체지향적으로 잘 설계된 도메인 코드를 얻을 수도 있다.
🎈 SQL이란?
SQL은 Structed Query Language의 약어로 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
※ 명령어 종류
- 데이터 정의 언어 (DDL : Data Definition Language)
- 데이터 조작 언어 (DML : Data Manipulation Language)
- 데이터 제어 언어 (DCL : Data Control Language)
JPA 실무에서 어려운 이유!
- 처음 JPA나 스프링 데이터 JPA를 만난다면?
- SQL 자동화, 수십 줄의 코드가 한두 줄로 완성 가능하다!!
- 실무에 바로 도입하면? -> 망할 가능성이 높다.
- 예제들은 보통 테이블이 한두 개로 단순하다.
- 실무는 수십 개 이상의 복잡한 객체와 테이블을 사용한다.
목표 : 객체와 테이블 설계 매핑
- 객체와 테이블을 제대로 설계하고 매핑하는 방법
- 기본 키와 외래 키 매핑
- 1:N, N:1, 1:1, N:M 매핑
- 실무 노하우 + 성능까지 고려
- 어떠한 복잡한 시스템도 JPA로 설계 가능
목표 : JPA 내부 동작 방식 이해
- JPA의 내부 동작 방식을 이해하지 못하고 사용한다.
- JPA 내부 동작 방식을 그림과 코드로 자세히 설명한다.
- JPA가 어떤 SQL을 만들어 내는지 이해한다.
- JPA가 언제 SQL을 실행하는지 이해한다.
JPA 기본편 학습 방법
- JPA는 표준 스펙만 500 페이지로 방대하다.
- 혼자서 공부하기는 쉽지 않다.
- 강의는 이론 + 라이브 코딩으로 진행된다.
- 6단계의 실전 예제가 주어진다.
- 강의를 메인으로 하고, 책은 참고서로 추천한다.
- 총 16시간: 하루 1시간 반, 2주 완성
JPA를 많이 사용하는가?
: 2017년부터 현재(2022년 07월 13일)까지 대한민국 구글 검색량을 비교한 내용이다.
위 그래프를 살펴보면 시간이 지날수록 JPA가 경쟁자라 할 수 있는 mybatis를 넘어서는 모습을 볼 수 있다.
검색량을 대한민국에 국한시키지 않고 전 세계로 확장시키면 JPA가 압도적으로 높은 것을 확인할 수 있다.
JPA 적용 사례
- 우아한형제들, 쿠팡, 카카오, 네이버 등등
- 조 단위의 거래금액이 발생하는 다양한 서비스에서 사용, 검증
- 최신 스프링 예제는 JPA 기본 적용
- 자바 개발자에게 JPA는 기본 기술
- 토비의 스프링 이일민 님도 JPA는 기본 적용