8 : 20 개발실Log
홈
생각정리
방명록
8시20분 ::
8 : 20 개발실Log
방명록 남기기
[1장] JPA 소개
책 스터디 정리/JPA ORM 스터디
2023. 4. 4. 14:07
1-1. SQL을 직접 다룰 때 발생하는 문제점
자바 애플리케이션이 관계형 DB와 통신할 때 JDBC API를 통해 SQL문을 사용한다.
DB와 객체는 서로 다른 구조를 가지고 있어 객체를 DB에 직접 저장하거나, 조회가 불가능해서 개발자가 직접 애플리케이션 코드와 DB 테이블 사이의 변환 작업을 SQL과 JDBC API로 해야한다.
테이블마다 동일하게 DAO 구성 작업을 반복해야한다.
1-2. SQL에 의존적인 개발
개발하다 요구사항(스펙)이 변경되면 관련 DAO 로직의 SQL 실행을 확인 후, 수정이 필요하다.
SQL에 의존하는 상황에서는 엔티티를 신뢰할 수 없다.
물리적으로는 SQL과 JDBC API를 DAO에 숨겼지만, 논리적으로는 강한 의존 관계를 가지고 있다.
강한 의존 관계로 인해 요구 사항의 변경이 있을 때마다 매번 SQL 및 DAO 코드들을 수정해야한다.
2-1. 패러다임의 불일치
객체와 관계형 DB의 패러다임 불일치로 인해 많은 시간과 코드가 소비된다.
객체 vs 관계형 DB
상속
객체는 class 형태의 extends 상속이 가능
테이블은 슈퍼/서브 타입으로 유사하게 설계 가능
연관 관계
객체는 참조를 사용하여 연관 관계를 가짐
테이블은 외래 키를 사용해서 join을 통해 연관 테이블 조회함
객체 그래프 탐색
객체는 객체 그래프 전체를 탐색 가능
테이블의 경우, 처음 실행되는 SQL에 따라 객체 그래프의 범위가 정해짐
JPA Lazy Loading(지연 로딩)으로 테이블에서도 객체 그래프 전체 탐색 가능
비교
DB는 PK(Primary Key)로 row 구분
객체는 동일성/동등성 비교함
동일성: 객체 인스턴스의 메모리 주소 값을 비교한다.
동등성: equals 메소드로 객체 내부의 값을 비교한다.
DAO로 직접 조회 SQL 작성 시 DB의 동일한 row 조회시 서로 다른 객체 인스턴스로 생성
JPA는 같은 트랜잭션일 때 같은 객체 조회 보장
객체 모델과 DB 모델은 서로 지향하는 패러다임이 다름
패러다임 불일치 문제를 해결하려면 코드와 시간 비용이 커짐
JPA: 패러다임 불일치 문제 해결 및 객체 모델링이 유지가능하게 도와줌
2-2. JPA란 무엇인가?
JPA는 Java 진영 ORM 기술 표준이다. (JDBC API를 추상화한 느낌)
ORM은 객체와 DB를 매핑하여 개발자 대신 패러다임 불일치 문제 해결
2-3. JPA 소개
하이버네이트 기반 자바 ORM 기술 표준
자바 ORM 기술에 대한 API 표준 명세
JPA를 구현한 ORM 프레임워크(하이버네이트, DataNucleus) 사용
특정 구현 기술에 대한 의존도 감소, 다른 기술로 쉽게 이전 가능
2-4. 왜 JPA를 사용해야 하는가?
생산성
반복적인 코드, CRUD용 SQL을 직접 작성할 필요가 없다.
DB 중심의 설계를 객체 중심 설계로 역전 가능
유지보수
스펙이 변경되면 관련 JDBC API 모두 변경 필요
JPA가 대신 처리해줘서 유지보수 코드 수 감소
패러다임 불일치 해결
성능
DB와 두 번 통신해야하는 로직을 한번만 조회하고 캐싱을 사용함
SQL 힌트를 넣을 수도 있음
데이터 접근 추상화 및 벤더 독립성
서버 애플리케이션과 DB 사이에 추상화된 DAO를 제공해서 특정 DB 기술에 종속되지 않음
ex) 로컬 개발은 H2 DB, 상용은 MySQL
표준
공유하기
게시글 관리
8 : 20 개발실Log
저작자표시
'
책 스터디 정리
>
JPA ORM 스터디
' 카테고리의 다른 글
[7장] 고급 매핑
(0)
2023.05.09
[6장] 다양한 연관관계 매핑
(0)
2023.05.02
[5장] 연관관계 매핑 기초
(0)
2023.04.25
[4장] 엔티티 매핑
(0)
2023.04.18
[3장] 영속성 관리
(0)
2023.04.11
티스토리툴바
8 : 20 개발실Log
구독하기
[1장] JPA 소개
1-1. SQL을 직접 다룰 때 발생하는 문제점
1-2. SQL에 의존적인 개발
2-1. 패러다임의 불일치
2-2. JPA란 무엇인가?
2-3. JPA 소개
2-4. 왜 JPA를 사용해야 하는가?
'책 스터디 정리 > JPA ORM 스터디' 카테고리의 다른 글