JPA (Java Persistence API)
- 자바의 ORM 기술의 표준이다.
- 자바 ORM에 대한 API 표준 명세로써 인터페이스의 모음
- 따라서, JPA를 사용하기 위해선 ORM 프레임워크를 선택해야 한다. (가장 대중적인 것은 하이버네이트)
- SQL을 직접 다루는 것이 아니라 JPA를 통해 SQL를 다루게 되는 것
여기서 ORM 이란?!
ORM (Object-Relational Mapping)
- 객체와 관계형 데이터베이스를 매핑한다는 뜻!
- ORM은 프레임 워크로써 객체와 테이블을 매핑해 패러다임의 불일치를 개발자 대신 해결해준다.
- 객채는 객체대로, DB는 DB에 맞도록 설계가 가능하다! 고로, 우리는 이를 매핑하는 방법만 잘 전달해주면 된다!
JPA 동작과정
- JPA는 애플리케이션과 JDBC 사이에서 동작
- JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신
- 우리가 ORM에 저장하면 적절한 INSERT SQL을 생성해 DB에 저장하고, 검색을 하면 SELECT SQL을 생성해 객체에 매핑 후 전달
사용 이유
- 생산성
- 자바 컬렉션에 저장하듯, JPA에게 저장할 객체를 전달하면 된다
- 코드의 반복이 줄어들고, DDL문도 자동 생성해주어 DB 설계 중심을 객체 설계 중심으로 변경 가능
(DDL => 데이터 정의 언어로, 테이블이나 관계의 구조를 생성하는데 사용 CREATE, ALTER, DROP, TRUNCATE 등이 있다) - 유지보수
- 필드 생성 시 관련 SQL, JDBC 코드를 전부 수행했지만, JPA가 대신 처리해주어 유지보수 코드 감소 - 패러다임 불일치 해결
- JPA는 연관 객체를 사용하는 시점에 SQL을 전달할 수 있고, 같은 트랜잭션 내에서 조회할 때 동일성도 보장하기에 패러다임 불일치를 해결 - 성능 최적화
- 같은 트랜잭션 안에서는 같은 엔티티를 반환하기 때문에 DB와의 통신 횟수를 줄임
- 트랜잭션을 commit 하기 전까지 메모리에 쌓고 한 번에 SQL을 전송 - 데이터 접근 추상화와 벤더 독립성
- RDB는 같은 기능이라도 벤더마다 사용법이 다르기에 처음 선택한 DB에 종속되고 변경이 어려움
- JPA는 애플리케이션과 DB 사이에서 추상화된 데이터 접근을 제공하기 때문에 종속 되지 않도록함
(만약, DB가 변경되더라도 JPA에게 알려주면 간단하게 변경 가능)
728x90
'ssung_항해일지 > 항해99_Spring_입문, 숙련, 심화' 카테고리의 다른 글
Spring - 9일차 (0) | 2023.02.11 |
---|---|
spring - 8일차 (0) | 2023.02.11 |
spring - 6일차 (0) | 2023.02.09 |
spring - 5일차 (0) | 2023.02.08 |
spring - 4일차 (메모장 만들기) (0) | 2023.02.07 |