JPA란

GH velog·2022년 3월 30일
0

JPA

목록 보기
1/6

JPA소개

JPA - Java Persistence API
자바 진영의 ORM 기술 표준
ORM

  • Object-relational mapping(객체 관계 매핑)
  • 객체는 객체대로 설계
  • 관계형 데이터베이스는 관계형 데이터베이스대로 설계
  • ORM 프레임워크가 중간에서 매핑
  • 대중적인 언어는 대부분 ORM 기술이 존재

JPA는 애플리케이션과 JDBC 사이에서 동작
JPA는 인터페이스의 모음
3가지 구현체 - 하이버네이트, EclipseLink, DataNucleus

JPA를 사용하는 이유

JPA를 사용하면 개발 생산성이 높아진다.
SQL 쿼리를 직접 작성할 필요가 없다.

JAP가 어려운 이유

  1. 실무에서는 수십 개 이상의 복잡한 객체와 테이블을 사용하기 때문에 힘들다.
  2. 객체와 테이블을 올바르게 매핑하고 설계하는 방법을 알아야 한다.
  3. 내부 동작 방식의 이해가 필요하다.

JPA는 왜 사용해야 하는가

SQL 중심적인 개발의 문제점

  • 언어는 객체지향 언어를 사용한다.
  • 데이터베이스는 대부분 관계형 DB이다.
  • 객체를 관계형 DB로 관리하게 된다.
  • 코드는 SQL 이다.
  1. 무한 반복, 지루한 코드
  • 객체 CRUD 등록, 조회, 수정, 삭제
  • EX) 연락처 컬럼 추가 -> 객체 및 모든 쿼리 수정!!!
  • SQL에 의존적인 개발을 피하기 힘들다.
  1. 페러다임의 불일치
  • 객체 VS 관계형 데이터 베이스
    객체는 시스템의 복잡성을 제어 할수 있는 다양한 장치로 구성
    관계형 데이터베이스는 데이터만 잘 정리해서 보관
  • 객체를 영구 보관하는 저장소의 현실적인 대안은 관계형 데이터베이스이다.
  • 객체 -> SQL 변환 -> RDB
    SQL 변환을 개발자가 한다.
  1. 객체와 관계형 데이터베이스의 차이
  • 상속, 연관관계(get, pk, fk, join 등등), 데이터 타입, 데이터 식별방법
    연관관계 객체 member.getTeam() (단방향) , SQL JOIN ON M.TEAM_ID = T.TEAM_ID (양방향)
    보통 객체를 테이블에 맞춰서 모델링 한다.
  1. 엔티티 신뢰 문제
  • 모든 객체를 미리 로딩할 수는 없다.
  • 객체답게 모델링 할수록 매핑 작업만 늘어난다.

객체를 자바 컬렉션에 저장 하듯이 DB에 저장할 수는 없을까? -> JPA

JPA의 장점

  1. SQL 중심적인 개발에서 객체 중심으로 개발
  2. 생산성
  • 저장: jpa.persist(member)
  • 조회: Member member = jpa.find(memberId)
  • 수정: member.setName(“변경할 이름”)
  • 삭제: jpa.remove(member)
  1. 유지보수 필드만 추가
  2. 패러다임의 불일치 해결
  • JPA와 상속


  • JPA와 연관관계
  • JPA와 객체 그래프 탐색
  • JPA와 비교하기
  1. 신뢰할 수 있는 엔티티, 계층 지연로딩(데이터가 있을때 필요한 시점에 SQL 쿼리를 날려준다)

    (데이터가 존재할 경우)
  2. JPA의 성능 최적화 기능
  • 1차 캐시와 동일성(identity)보장
  • 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)

  • 지연 로딩(Lazy Loading)

    옵션으로 컨트롤
profile
개발자 GH

0개의 댓글