자바 ORM 표준 JPA 프로그래밍

1장 JPA란 무엇인가?

pureworld 2021. 4. 30. 15:47

JPA란 무엇인가?

JPA는 자바 진영의 ORM 기술 표준이다. 

 

 

 

 

 

 

 

ORM(Object-Relational Mapping): 객체와 관계형 db를 매핑한다는 뜻.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

JPA를 사용해서 객체를 저장하는 코드.

jpa.persist(member); //저장

 

JPA를 사용해서 객체를 조회하는 코드.

Member member=jpa.find(memberId); //조회

 

 

ORM 프레임워크는 단순히 SQL을 개발자대신 생성해서 db전달하는것 X.

다양한 패러다임의 불일치 문제들도 해결가능.

->객체와 관계형 db 둘을 어떻게 매핑해야 하는지 매핑 방법만 ORM프레임워크에게 알려주면 된다.

 

하이버네이트: 거의 대부분의 패러다임 불일치 문제를 해결해주는 성숙한 ORM 프레임워크.

 

JPA 소개

 

 

 

 

 

 

 

 

 

 

 

 

 

그림:JPA 표준 인터페이스와 구현체

 

JPA는 자바 ORM기술에 대한 API 표준 명세이다.

 

쉽게 말해 인터페이스를 모아둔것.

따라서 JPA를 사용하려면 JPA를 구현한 ORM프레임워크를 선택해야한다. 하이버네이트가 가장 대중적으로 사용.

 

왜 JPA를 사용해야하는가?

 

1.생산성

JPA를 사용하면 다음코드처럼 자바컬렉션에 객체를 저장하듯이 JPA에 저장할 객체 전달하면된다.

INSERT SQL을 작성하고 JDBC API를 사용하는 지루하고 반복적인 일 JPA가 대신 처리.

jpa.persist(member); //저장

Member meber=jpa.find(memberId); //조회

 

개발자 노가다X. 더 나아가서 JPA에는 CREATE TABLE같은 DDL 문을 자동으로 생성하는 기능도있음.

이런 기능들을 사용하면 db설계중심-> 객체 설계 중심으로 역전가능.

 

2.유지보수

-SQL,JDBC API 코드를 JPA가 대신 처리.

-패러다임 불일치 문제 해결

 

3.성능

Member member1 = jpa.find(Member.class,memberId);

Member member2 =  jpa.find(Member.class,memberId);

같은 트랜잭션 에서 같은 회원 2번 조회하는 코드.

JDBC API를 사용해서 해당 코드 작성했으면 회원을 조회할 때마다 SELECT SQL사용해서 db와 통신.

but JPA사용시 회원을 조회하는 SELECT SQL을 1번만  db에 전달. 2번째는 조회한 회원 객체를 재사용.

 

4.데이터 접근 추상화와 벤더 독립성

 

 

 

 

 

 

 

 

 

 

 

JPA는 app과 db 사이에 추상화된 데이터 접근 계층을제공. app이 특정 db기술에 종속되지 않게함.

만약 db를 변경하면 JPA에게 다른 db를 사용한다고 알려주면 끝.

 

ex)JPA를 사용하면 로컬 개발환경은 H2db를 사용하고 개발이나 상용환경은 오라클,MYSQL db 사용가능.

 

5.표준

JPA는 자바 진영의 ORM 기술 표준. 표준을 사용하면 다른 구현 기술로 손쉽게 변경 가능.