본문 바로가기

개발일지

JPA (Java Persistence API) 공부중...

728x90

JPA란? 

JPA(Java Persistence API)는 자바진영의 ORM 기술표준임. 

 

JPA 개념 참고 이미지 https://ultrakain.gitbooks.io/jpa/chapter1/chapter1.3.html 참조

(결국은 참조 사이트를 공부한다고 다시 타이핑 치고 있는 중... ^^)

 

ORM(Object Relational Mapping) 

객체와 테이블을 매핑해서 패러다임의 불일치를 개발자 대신 해결해준다.

이름 그대로 객체와 관계형데이터베이스를 매핑한다는  뜻이다.

 

예를들어 ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이  아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM프레임워크에 저장하면 된다.

 

객체를 저장하는 코드

jpa.persist(member);   // 저장

객체를 조회하는 코드

Member mebmer = jpa.find(memberID); // 조회

 

JPA 소개

EJB 3.0에서 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준이 만들어 졌는데 이것이 바로 JPA

 

버전별 특징

버전연도설명

JPA 1.0(JSR 220) 2006년 초기 버전, 복합 키와 연관관계 기능 부족
JPA 2.0(JSR 317) 2009년 대부분의 ORM 기능 포함, JPA Criteria가 추가
JPA 2.1(JSR 338) 2013년 스토어드 프로시저 접근, 컨버터, 엔티티 그래프 기능 추가

 

왜 JPA를 사용해야하는가?

 

생산성

  • JPA를 자바 컬렉션에 객체를 저장하듯 JPA에게 저장할 객체를 전달
  • INSERT SQL을 작성하고 JDBC API 사용하는 지루하고 반복적인 일을   JPA가 대신  처리해준다.
  • CREATE TABLE같은 DDL문 자동생성
  • 데이터베이스 설계 중심의 패러다임을객체 설계 중심으로 역전

유지보수

  • 엔티디에 필드 추가시 등록, 수정, 조회 관련 코드 모두 변경
  • JPA를 사용하면 이런 과정을 JPA가 대신 처리
  • 개발자가 작성해야 할 SQL과 JDBC API 코드를 JPA가 대신 처리해줌으로 유지보수해야 하는 코드 수가 줄어든다.

패러다임 불일치 해결

  • 상속, 연관관계, 객체 그래프 탐색, 비교하기 같은 패러다임 불일치 해결\

성능

  • 다양한 성능 최적화 기회 제공
  • 어플리케이션과 데이터베이스 사이에 존재함으로 여러 최적화 시도 가능

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

  • 데이터베이스 기술에 종속되지 않도록 한다.
  • 데이터베이스를 변경하면 JPA에게 다른 데이터베이스를 사용한다고 알려주면 됨.

 

표준

자바 진영의 ORM 기술표준

 

개요를 공부한 뒤에 프로그래밍 실습을 하기 위하여 H2 데이터베이스를 설치함

 

728x90