JPA(Java Persistence API)
- 자바 진영의 ORM 기술 표준어.
- 애플리케이션과 JDBC 사이에서 동작.
- 자바 ORM 기술에 대한 API 표준 명세.
ORM(Object-Relational Mapping) : 객체와 관계형 데이터베이스를 매핑한다.
객체와 테이블을 매핑해서 패러다임 불일치 문제를 개발자 대신 해결한다.
ORM은 SQL을 단순히 개발자 대신 짜주는 것 뿐만 아니라 다양한 패러다임 불일치 문제를 해결하고, 정교한 객체 모델링을 도와준다.
ORM프레임워크들은 성숙도에 따라 단순한 CRUD 기능부터 패러다임 불일치 문제 해결까지 해주는 것들도 있다.
그중 자바 진영에서는 하이버네이트 프레임워크가 가장 많이 사용된다.
JPA를 통해서 특정 구현 기술에 대한 의존도를 줄일 수 있다. 예를 들어 Oracle을 쓰다가 MySQL로 갈아타는 경우 SQL을 수정할 필요가 없어서 좋다. JPA 표준은 일반적이고 공통적인 기능의 모음이기 때문이다.
왜 JPA 사용하는가?
1. 생산성
CRUD의 반복적인 기능 구현을 없애주기 때문에 생산적이다.
JPA에는 DDL문도 자동생성 해주는 기능도 있다.
이런 기능을 통해서 데이터베이스 설계 중심 패러다임에서 객체 설계 중심으로 역전 시킬 수 있다.
2. 유지보수
SQL을 직접다루면 수정해야하는 코드 부분이 많다.
반면 JPA를 사용하면 알아서 처리 해줌으로 수정 코드가 줄어든다.
패러다임 불일치 문제도 해결 해줌으로 유지보수 하기 좋은 도메인 모델을 편리하게 설계할 수도 있다.
3. 패러다임 불일치 해결
상속, 연관관계, 객체 그래프 탐색, 비교와 같은 패러다임 불일치 문제를 해결해준다.
4. 성능
애플리케이션과 데이터베이스 사이에서 성능최적화 기회를 제공한다.
String memberId = "helloId";
Member member1 = jpa.find(memberId);
Member member2 = jpa.find(memberId);
위의 코드에서 SQL을 직접사용하는 경우 쿼리를 두번 호출하지만, JPA를 사용하면 두번째는 조회한 객체를 재사용한다.
5. 데이터 접근 추상화와 벤더 독립성
RDB는 같은 기능도 벤더마다 사용법이 다른 경우가 많다.
예를 들어 페이징 처리의 경우 DB마다 달라서 사용법을 각각 배워야 하고, 애플리케이션은 처음 선택한 DB 기술에 종속된다.
JPA는 추상화된 데이터 접근 계층(DAO)을 제공해서 애플리케이션이 특정 DB에 종속되는걸 막는다.
'Spring' 카테고리의 다른 글
JPA Application 개발 (0) | 2024.09.21 |
---|---|
데이터베이스 방언(dialect) (1) | 2024.09.21 |
JPA를 왜 쓰는가? (0) | 2024.09.21 |
오늘부터 JPA (0) | 2024.09.21 |
인텔리 제이 단축키 (0) | 2024.01.15 |