JPA

강지영·2022년 7월 23일
0

Spring

목록 보기
2/5

ORM(Object Relational Mapping)

  • 객체 관계 매핑
    - 객체는 객체대로 설계하고 관계형DB는 관계형DB대로 설계하는 것을 의미

JPA(Java Persistence API)

  • JPA는 자바의 ORM(Object Relational Mapping) 기술 표준으로 인터페이스의 모음
  • JPA의 스펙은 자바의 객체(데이터)와 데이터베이스를 어떻게 매핑하고 동작해야 하는 지 정의하고 있다.

    Application 필드값들이 JPA를 통해서 데이터베이스의 저런 컬럼들과 매핑을 시켜주는 이런 작업을 우리는 JPA에서 진행을 하고 있다
  • JPA의 구현체는 EclipseLink, Hibernate, CataNucleus가 있는 데 Hibernate가 현재 가장 많이 사용되고 있다.

JPA를 왜 사용해야 하는 가?

  • SQL 중심적인 개발에서 객체 중심으로 개발
    (SQL중심으로 개발하면 모든 쿼리를 다 작성해야 함 => 복잡해짐)
  • 생산성 => CRUD를 한 줄로 간단하게 작성이 가능
    저장 : jpa.persist(변수)
    조회 : Member member = jpa.find(memberId)
    수정 : member.setName("변경할 이름")
    삭제 : jpa.remove
  • 유지보수
    기존 : 필드 변경 시, 모든 SQL을 수정해야 됨

    JPA : 필드만 추가하면 SQL을 JPA가 처리
  • 패러다임의 불일치 해결
    상속, 연관관계, 객체 그래프 탐색, 비교하기 같은 패러다임 불일치를 해결
    여기서 JPA와 상속을 예를 들어 설명하자면 >
    저장 : 개발자가 jpa.persist(객체)를 넣으면

    조회 : 개발자가 타입을 넣고 객체를 넣으면 JPA 식별자와 쿼리도 다 들고 나옴
  • 성능
  1. 1차 캐시와 동일성(identity) 보장

    같은 트랜잭션안에서 조회하면 DB에서 데이터를 가져오지 않고 캐쉬에서 가져옴
  2. 지연 로딩과 즉시 로딩
    지연 로딩 : 개체가 실제 사용될 때 로딩
    즉시 로딩 : JOIN SQL로 한 번에 연관된 객체까지 미리 조회

    JPA에서 설정하나를 바꾸면 이것이 가능하다.
profile
Hello World!

0개의 댓글