JPA 이해

test·2021년 10월 18일
0

JPA

목록 보기
1/5
post-thumbnail

JPA ? Java Persistence API

Java ORM 기술 표준

ORM ? Object-relational mapping - 객체 관계 매핑

  • 객체는 객체대로 설계
  • 관계형 데이터베이스는 관계형 데이트베이스대로 설계
  • 객체와 데이터베이스를 ORM 프레임워크가 중간에서 매핑

생산성 향상 - CRUD

Java collection을 사용하듯 CRUD 활용 가능

  • create > jpa.persist(member)
  • select > Member member = jpa.find(mamberId)
  • update > member.setName("newName") [변경감지]
  • delete > jpa.remove(member

영속성 컨텍스트

영속성 컨텍스트란.. 엔티티를 영구 저장하는 환경

EntityManager.persist(entity 객체);

  • database에 저장하는것이 아니라 영속성 컨텍스트에 저장한다. entity객체를 영속화 한다는 뜻
  • EntityManager를 통해 영속성 컨텍스트에 접근
    예제로 이해하기

성능 최적화(영속성 컨텍스트 이점)

1차 캐시와 동일성 보장

  • 같은 트랜잭션 안에서는 같은 엔티티를 반환 > 조회 성능 향상
  • DB isolation level 이 read commit이어도 애플리케이션에서 repeatable read 보장

트랜잭션을 지원하는 쓰기 지연

  • transaction을 commit할 때까지 insert sql을 모아둔다
  • JDBC BATCH SQL기능을 사용해 한 번에 sql 전송

지연로딩과 즉시로딩

  • 지연로딩 > 객체가 실제 사용될 때 로딩
  • 즉시로딩 > JOIN SQL로 한번에 연관된 객체까지 미리 조회
    예제로 이해하기

Entity 생명주기

  • 비영속(new/transient)
    영속성 컨텍스트와 관계 없는 새로운 상태
  • 영속(managed)
    영속성 컨텍스트에 관리되는 상태
  • 준영속(detached)
    영속성 컨텍스트에 저장되었다가 분리된 상태
  • 삭제(removed)
    삭제된 상태

예제로 이해하기

참조 : 김영한님 JPA 강의

profile
bedev

0개의 댓글