1. JPA 란?
JPA(Java Persistence API) 는 자바 진영의 ORM 기술 표준으로 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스의 모음이다. 여기서 ORM은 객체와 데이터베이스 사이에서 매핑해주는 기술로 자세한 개념은 아래 포스팅에 정리해놓았다.
https://lhyeinlog.tistory.com/45
[DB] ORM 이란 무엇인가? ORM의 장단점
1. ORM 기술이란? ORM은 Object-Relational Mapping 의 약자로 객체와 관계형 데이터베이스 중간에서 데이터를 변환하고 상호작용할 수 있도록 매핑해주는 기술로 객체와 관계형 데이터베이스에서의 테이
lhyeinlog.tistory.com
JPA는 표준 인터페이스의 모음이기 때문에 Hibernate, EclipseLink, DataNucleus 와 같은 구현체가 존재하며 대부분이 사용하는 대표적인 구현체가 Hibernate이다.
2. JPA의 동작
JPA는 애플리케이션과 JDBC 사이에서 동작하며 JDBC API 를 사용하여 SQL 쿼리를 날리고 DB와 통신한다.
예를 들어 Member 객체를 DB에 저장할 때 JPA 동작을 살펴보면 아래와 같다.

우리가 DAO에서 Member 객체를 저장하기 위해 JPA 에서 제공해주는 persist 함수를 호출해주기만 하면 JPA에선 알아서 엔티티를 분석하고 INSERT SQL 쿼리를 생성한 후 JDBC API 를 통해 DB에 쿼리를 날려주기 때문에 객체와 데이터베이스의 패러다임의 차이를 알아서 해결해준다.
조회하는 경우에도 알아서 SELECT SQL문을 생성하여 날리고 조회한 데이터를 객체에 매핑하여 반환해준다.
3. 그렇다면, JPA를 왜 사용하는가?
- SQL 중심적인 개발에서 객체 중심적으로 개발이 가능하다.
- 직접 SQL 작성 없이 메소드만으로 DB 조작이 가능하다.
- 반복적인 CRUD를 위한 SQL 작성이 없어지므로 생산성도 향상된다.
- 유지보수에 용이하다.
- 기존엔 필드가 추가될 경우 모든 SQL 문에 필드를 직접 추가해주어야 한다.
- JPA의 경우 필드만 추가해주면 SQL은 알아서 JPA가 처리해준다.
- 객체와 데이터베이스의 패러다임의 불일치를 해결해준다.
- 상속, 연관 관계: 간단히 메소드만 사용하면 JPA가 알아서 처리한다.
- 객체 그래프 탐색: 엔티티를 신뢰할 수 있게 되고 계층 분할이 쉬워진다.
- 객체 동등성 비교: 1차 캐싱에 의해 동일한 트랜잭션에서 조회한 엔티티는 같음이 보장된다.
JPA를 사용하면 SQL 도 생성해주고 DB와의 상호작용을 알아서 처리해주는 데 DB를 몰라도 되는가?
=> NO! JPA를 잘 사용하기 위해선 객체와 관계형 데이터베이스를 둘 다 잘 알아야 한다는 것을 기억하자👍
자료 출처 - 김영한의 < 자바 ORM 표준 JPA 프로그래밍 - 기본편 >
'JPA' 카테고리의 다른 글
| [JPA] em.clear() 후 엔티티의 getId() 동작에 대한 의문점 🙋♂️ (0) | 2024.02.18 |
|---|---|
| [JPA] JPA 사용을 위한 설정과 동작 이해 (0) | 2024.02.01 |
| [JPA] JPA의 등장 배경은? (0) | 2024.01.31 |