자바 ORM 표준 JPA 프로그래밍 : 교보문고
자바 ORM 표준 JPA 프로그래밍 - 기본편 : 인프런
Java Persistence API 의 약자.
Java ORM 표준
Object Relational Mapping
객체와 RDB 를 연결해주는 Framework
JPA 는 Java ORM 표준 명세이다.
여기서 ORM 이란 쉽게 말해 객체와 데이터 베이스를 연결해주는 Framework 이다.
앞에서 알아본 Java 에서 DB 에 있는 데이터를 조작할 때
발생하는 많은 문제점들을 해결 할 수 있다.
JAVA ORM 에 대한 규격화된 Interface 모음 정도로 이해하면 될 것 같다.
JAVA ORM Interface 구현체 중에서 우리가 흔히 쓰는 구현체가
Hibernate 이다 .
1 . ORM 은 객체와 DB 사이를 연결해주는 Framework 이다.
2 . JPA 는 Java 의 ORM 표준 명세를 말한다. 즉 규격화 된 JAVA ORM 인터페이스 모음
3 . Hibernate 는 JPA 의 구현체 중 하나를 말한다.
1. Create
jpa.persist(member);
2. Reade
jpa.find(memberId);
3. Update
member.setName("new Name");
jpa.persist(member);
4. Delete
jpa.remove(member);
CRUD 구성을 위한 기능이 지원된다.
이전에 작성한 반복적인 SQL Query 작성과 달리
JPA 에서 지원해주는 기능으로 간단하게 CRUD 를 작성할 수 있다.
이에 따른 생산성도 증가할 수 있다.
JPA 가 필드관리를 수행하고 있어 객체에 필드 추가가 되어도 수정할 부분이 적어진다.
class Food
{
String name ;
int price;
long pid ;
}
class iceCream extends Food
{
String iceCreamFavor;
}
class Ramen extends Food
{
Long scobilLevel;
Egg egg;
}
class Egg
{
int eggCnt ;
boolean isEggSunRise;
}
저장 : 스코빌 지수가 30 인 라멘을 저장하려면
jpa.persist(ramen);
조회 : 특정 라멘을 조회 하려면
jpa.find(Ramen.class, ramenPid);
연관관계 설정 : 라멘에 계란2개를 연관 시키려면
ramen.setEgg(eggCntIs2);
jpa.persist(ramen);
그래프 탐색 : ramen 객체에서 egg 객체 그래프 탐색
Ramen ramen = jpa.find(Ramen.class, ramenPid);
Egg egg2 = ramen.getEgg();
같은 Transaction 에서 같은 조건으로 조회하여 얻은 객체는 같다.
( 1차 캐시와 동일성 보장 )Ramen ramen1 = jpa.find(Ramen.class, ramenPid); Ramen ramen2 = jpa.find(Ramen.class, ramenPid); ramen1 == ramen2
COMMIT 전까지 CRUD Query 롤 모아서 한번에 실행
연관관계가 있는 테이블 조회 시 연관관계에 있는 테이블을 자주 사용하지 않는 경우
연관관계 테이블 데이터 까지 가져오는 것은 비효율적이다.
JPA 에서 지연 로딩을 설정하면 실제로 연관관계 테이블 데이터가 사용될 때 데이터가 조회된다.
JPA 사용 시 장점
1 . 간단한 CRUD 구성이 가능하다
2 . 그에 따른 유지보수가 간단하다.
3 . 객체와 DB 간 패러다임 불일치를 어느정도 해결할 수 있다.
4 . 성능 개선을 위한 다양한 기능들을 제공한다.