일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- cicd
- 이펙티브자바
- reactive operaton
- 큐시즘
- JPQL
- JPA
- java
- Spring Batch
- rabbitmq-delayed-message-exchange
- kusitms
- 밋업프로젝트
- delayed message plugin
- scheduling messages with rabbitmq
- Spring
- 교육기획팀원
- 최범균
- jdbc
- ddd
- 객체지향 쿼리 언어
- 30기
- RESTClient
- 도메인 주도 개발 시작하기
- 자동처리
- 한국대학생it경영학회
- Domain Driven Design
- 영속성
- 교육기획팀
- 자바 ORM 표준 JPA 프로그래밍
- springboot
- GitHub Actions
- Today
- Total
코딩은 마라톤
[자바 ORM 표준 JPA 프로그래밍] 1장. JPA 소개 본문
JDBC

- JDBC를 사용하여 DB에 접근할 경우, JDBC API를 사용해서 SQL을 DB에 전달한다.
1. SQL을 직접 다룰 경우 생기는 문제점
- SQL을 직접 다룰 경우, CRUD용 SQL을 반복해서 작성해야하는 비생산적인 과정을 수행해야한다.
- SQL에 의존적인 개발을 하게 된다. (테이블에 컬럼을 추가시 연관된 SQL을 모두 수정해야한다.)
2. 객체지향 DB의 패러다임 불일치
- 상속 : 객체는 상속 기능 O VS 테이블은 상속 기능 X
- 연관관계 : 객체는 참조를 통해 연관 객체 조회 VS 테이블은 외래키와 조인을 사용해서 조회
- 객체 그래프 탐색 : SQL을 직접 다룰 경우, SQL에 따라 객체 그래프를 어디까지 탐색할 수 있는지 정해진다.
- 비교 : 동일성(==) 비교시 같은 멤버 id에서 꺼내오더라도 두 객체는 같지 않다.
=> 이를 JPA가 해결해준다.
JPA

- 자바 진영의 ORM(Object-Relational-Mapping) 기술 표준
- 자바 ORM 기술에 대한 API 표준 명세
- 애플리케이션과 JDBC 사이에서 동작
ORM
- 객체와 관계형 데이터베이스를 매핑
- 위에 기술한 객체와 테이블의 패러다임 불일치 문제를 개발자 대신 해결
=> 객체 측면에서는 정교한 객체 모델링을 할 수 있고, 관계형 DB에서는 데이터베이스에 맞도록 모델링 하면 된다.
=> 둘을 어떻게 매핑해야하는지 매핑 방법만 ORM 프레임워크에 알려주면 된다.
JPA 사용 이유
- 생산성
jpa.persist(member); // 저장
Member member = jpa.find(memberId) // 조회
- 지루하고 반복적인 코드와 CRUD용 SQL을 개발자가 직접 작성하지 않아도 된다.
- 유지보수
- SQL을 직접 다룰 경우, 엔티티에 필드 하나만 추가해도 관련된 모든 JDBC API 코드를 모두 변경해야한다.
- JPA는 대신 처리해주므로 유지보수해야하는 코드 수가 줄어든다.
- 패러다임의 불일치 해결
- 성능
Long memberId = 1L;
Member member1 = jpa.find(memberId);
Member member2 = jpa.find(memberId);
- 같은 트랜잭션 안에서 같은 회원을 두 번 조회하는 코드에서 JDBC API를 사용하면 SELECT SQL을 두 번 사용한다.
=> JPA를 사용하면 회원 조회 SELECT SQL을 한번만 DB에 전달하고 두 번째는 조회한 회원 객체를 재사용한다.
- 데이터 접근 추상화와 벤더 독립성
- 데이터베이스를 변경하면 JPA에게 다른 데이터베이스를 사용한다고 알려주기만 하면 된다.
ex) dev : MySQL, local : h2 일 경우, h2에서 JPA를 사용하다가 개발 환경에서 MySQL로 옮겨 사용할 수 있다.
- 표준
- JPA는 자바 진영의 ORM 기술 표준이다.
- 표준이기 때문에 다른 구현 기술로 손쉽게 변경할 수 있다.
출처 : 자바 ORM 표준 JPA 프로그래밍 책
'Backend > JPA' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 5장. 연관관계 매핑 기초 (0) | 2024.02.04 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 4장. 엔티티 매핑 (0) | 2024.02.02 |
[자바 ORM 표준 JPA 프로그래밍] 3장. 영속성 관리 (0) | 2024.01.29 |
[자바 ORM 표준 JPA 프로그래밍] 2장. Java + Gradle 설정 (1) | 2024.01.28 |
Entity Listener의 활용 (AuditingEntityListener) (0) | 2023.11.03 |