JPA

|

JPA

정의

자바 진영의 ORM 표준 기술이며, 하이버네이트를 기반으로 만들어졌다.

  • 장점
    • 디비 벤더에 종속적이지 않다.
    • 테이블 생성, 변경, 테스트 등이 쉽다.
    • 객체 지향적으로 개발이 가능.
  • 단점
    • 성능상 문제가 발생할 가능성이 있다. ( N +1 문제 )
    • 복잡한 쿼리는 직접 쿼리를 작성하는 게 낫다.
    • 학습 곡선이 높다.

특징

CASCADE TYPE

어떤 조작을 몇 번을 반복하더라도 결과가 동일한 것.

  • ALL : 모두 적용
  • PERSIST : 영속
  • MERGE : 병합 ( 준영속 상태를 영속 상태로 변환 )
  • REMOVE : 삭제
  • REFRESH : 엔티티를 최신 상태로 다시 캐쉬한다.
  • DETACH : 준영속 상태로 변환

OrphanRemoval

자식 엔티티의 참조만 제거하면, 자식 엔티티 또한 자동으로 삭제되게 하는 옵션.

영속성 콘텍스트

어플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 하며, 1차 캐쉬, 쓰기 지연, 변경 감지, 지연 로딩 등의 기능을 담당 한다. spring-data-jpa 에서는 transaction 과 생명 주기를 같이 한다. ( OSIV 설정이 켜져 있다면, 트랜젝션이 종료되더라도 영속성 콘텐스트는 요청 처리가 끝날 때까지 살아남게 된다. )