STUDY ROOM
[JPA#1] JPA 정의 본문
JPA(Java Persistence API)란?
EJB ------->하이버네이트(오픈 소스)------>JPA(자바표준)
- JPA란 DB 테이블과 자바 객체 사이의 매핑을 처리해주는 ORM이란 기술의 표준명세서
- 인터페이스의 모음
- 객체와 DB 사이의 매핑을 어떻게 설정하고 어떻게 동작해야하는지 기술
- 즉 자바의 클래스와 DB의 테이블을 매핑하는 기술(RDB를 어떻게 사용할지에 대한 정의)
- 애플리케이션과 JDBC 사이에서 동작
EX)
- 저장: MemberDAO에서 멤버를 저장하라고 시키면, JPA는 PERSIST라는 메서드를 호출하고, Entity Object(Member)를 넘긴다. ->JPA가 MemberEntity를 분석 하고 DB에 INSERT SQL 생성함, 이후 JDBC API를 사용해서 DB에 INSERT 쿼리를 날림. 패러다임 불일치 해결(상속관계 등)
- 조회: MemberDAO에서 find(id)로 식별자 넘김. 객체를 분석해서 JPA가 SELECT SQL을 생성함. ResultSet 매핑. 패러다임 불일치 해결.
=> 결론, 앨범 객체를 저장하려 할때, 기본적으로 1. 객체분해 2,INSERT INTO ITEM 3.INSERT INTO ALBUM 이 존재하는데, JPA는 Album 객체만 저장하면 자동으로 분리되서 저장된다.
*ORM :(Object-relational mapping :객체 관계형 매핑) : 클래스만 이용해서 데이터 베이스에 쉽게 접근(쿼리없이) JPA가 자바에서 ORM 기술을 정의함. 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베스대로 설계함. ORM 프레임워크가 중간에서 매핑
하이버네이트란(오픈소스)?
JPA 프로바이더
- 하이버네이트란 JPA 프로바이더의 한 종류
- JPA 프로바이더는 JPA의 표준을 실제로 구현
JPA는 DB와 자바 객체를 매핑하기 위한 인터페이스(API)를 제공하고 JPA 프로바이더는(하이버네이트) 이 인터페이스를 구현한 것
JPA 특징
-
자바 객체와 DB 테이블 사이의 매핑 설정을 통해 SQL을 생성.
DB커넥션을 구하고, 쿼리를 작성하고, 파라미터를 설정하고 실행한 결과를 자바 객체에 설정
여기서 문제점은 테이블의 컬럼명이 추가, 삭제, 변경이 된다면 관련되어 있는 모든 쿼리를 수정해야 할 것인데 JPA는 매핑 설정만 변경하면 됨. 또한 실행한 쿼리를 자바 객체에 설정해줘야하는데 JPA는 자바 객체로 매핑하여 검색할 수 있어 유지보 수에 용이함 -
객체를 통해 쿼리를 작성할 수 있는 JPQL(Java Persistence Query Language)를 지원함
-
JPA는 성능 향상을 위해 지연 로딩이나 즉시 로딩과 같은 몇가지 기법을 제공하는데 이것을 잘 활용하면 SQL을 직접 사용하는 것과 유사한 성능을 얻을 수 있다.

JPA 사용 이유
-
생산성
- 저장 : jpa.persist(member)
- 조회 : Member member = jpa.find(memberId)
- 수정 : member.setName("변경할 이름")
- 삭제 : jpa.remove
-
유지보수
- JPA : 필드만 추가하면 됨, SQL은 JPA가 처리
-
패러다임 불일치 해결
- 상속/조회/ 연관관계, 객체그래프 탐색
출처:https://dev-troh.tistory.com/150[개발공부블로그],
https://youtu.be/U2s2JhzPZf4,gmlwjd9405.github.io/2019/08/04/what-is-jpa.html
'Spring' 카테고리의 다른 글
[JPA#2] JPA 매핑 (0) | 2020.12.28 |
---|---|
[Thymeleaf#1] 정의 (0) | 2020.12.08 |
스프링 기본(2) -AOP와 트랜잭션 (0) | 2019.12.26 |
스프링 기본(1) -프레임워크란? (0) | 2019.12.08 |