JPA에 대한 소개

XingXi·2023년 12월 20일
0

JPA

목록 보기
2/23
post-thumbnail

🍕 Reference

자바 ORM 표준 JPA 프로그래밍 : 교보문고
자바 ORM 표준 JPA 프로그래밍 - 기본편 : 인프런

🚀 JPA 간략한 소개 1

JPA

Java Persistence API 의 약자.
Java ORM 표준

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 의 구현체 중 하나를 말한다.


🚀JPA 간략한 소개 2

1.간단한 CRUD 구성 가능

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 를 작성할 수 있다.
이에 따른 생산성도 증가할 수 있다.

2.유지보수 간편

JPA 가 필드관리를 수행하고 있어 객체에 필드 추가가 되어도 수정할 부분이 적어진다.

3.패러다임 불일치 해결

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;
}

1. 상속

저장 : 스코빌 지수가 30 인 라멘을 저장하려면

  • 기존 : Ramen 과 Food 테이블에 대한 Insert 쿼리를 각자 만들어 준다.
  • jpa : Food 테이블 데이터 까지 저장된다.
jpa.persist(ramen); 

조회 : 특정 라멘을 조회 하려면

  • 기존 : Ramen 과 Food 테이블에 대한 JOIN 쿼리를 작성한다.
  • jpa : JPA 가 자동적으로 JOIN 쿼리를 작성한다.
jpa.find(Ramen.class, ramenPid);

2. 연관관계

연관관계 설정 : 라멘에 계란2개를 연관 시키려면

ramen.setEgg(eggCntIs2); 
jpa.persist(ramen);

3. 객체 그래프 탐색

그래프 탐색 : ramen 객체에서 egg 객체 그래프 탐색

Ramen ramen = jpa.find(Ramen.class, ramenPid); 
Egg egg2 = ramen.getEgg();

4. 성능 최적화 기능

동일 Transaction 의 경우 조회하는 객체 동일성 보장

같은 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 . 성능 개선을 위한 다양한 기능들을 제공한다.

0개의 댓글