Home JPA 소개 TIL(2023.11.29)
Post
Cancel

JPA 소개 TIL(2023.11.29)

공부 시작

  • 회사에서 Mybatis만 쓰다가 도메인 기반 설계를 하면서 자연스럽게 객체 중심의 개발과정에서 ORM의 중요성을 깨닫고, 신규 서비스에는 JPA를 적용해보기 위해 TIL 정리를 시작하게 되었다.
  • 기존 한방 쿼리들 물론 성능적 이점이 있지만, 매번 매핑으로 받는 스트레스와 쿼리 result를 다시 객체로 변환하는 불편함등등… JPA 언릉 공부해서 도입해야지 ㅠㅠ
  • 2주내에 김영한님 기본 강의 완주를 목표로 공부 목적으로 요약하여 TIL을 올리고자 한다! 화이팅!

JPA 소개

  • JPA의 표준 명세와 구현체
  • 객체 중심 개발과 보안 프레임웍으로서의 역할
  • 생산성과 유지 보수를 향상시키는 패러다임의 불일치 해결 방법

TIL 요약

  • jpa 표준 명세 구현체 세 가지 파악
  • jpa 성능 최적화 기능 사용 방법 파악
  • jpa와 관계형 데이터베이스 개념 이해
  • jpa 인터페이스와 구현체 비교 분석

JPA의 개념

  • jpa는 자바 진영의 orm 기술 표준으로 객체 관계 매핑을 해줌
  • jpa는 애플리케이션과 JDBC 사이에서 동작을 함
  • jpa는 패러다임의 불일치를 해결해 줌

JPA의 탄생

  • jpa는 엔티티 빈으로부터 출발을 한 것임
  • ejb의 엔티티 빈은 성능이 안 나오고 실용성이 떨어져서 개발자 한 분이 하이버네이트라는 오픈 소스를 만듦

JPA의 정의

  • 하이버네이트를 만든 개빈 킹이 자바 진영에서 ejb를 집에 와서 자바 표준 or 명세를 새로 만듦
  • jpa는 오픈 소스에서 출발한 표준으로 굉장히 실용적임
  • jpa는 용어나 프로세스를 많이 정제함

JPA 표준 명세

  • jpa 표준 명세는 인터페이스의 모음이라고 보면 됨
  • jpa 표준 명세를 구현한 대표적인 구현체가 한 세 가지 정도가 있음
  • jpa 표준 명세 전에 하이버네이트를 거의 다 구현해 놓았기 때문에 jpa 표준 인터페이스에 하이버네이트 구현체를 쓴다고 생각하면 됨

JPA의 장점

  • jpa는 SQL 중심적인 개발에서 객체 중심으로 개발할 수 있음
  • jpa는 보안의 프레임웍으로 중간에서 문제를 해결해 줌
  • jpa는 생산성 유지 보수가 훨씬 늘어나게 됨
  • jpa는 패러다임의 불일치를 해결해 줌

JPA의 매핑 기능

  • jpa는 개발자가 직접 해주던 매핑 과정을 jpa가 다 해주게 됨
  • jpa 파인드에서 앨범 타입을 주고 조회를 하면 jpa가 다 조인해서 상속 관계니까 필요하겠다 두 개 테이블 조인해가지고 다 만들어서 앨범 객체에 반환해 줌
  • jpa는 연관관계와 객체 그래프 탐색을 해줌
  • jpa는 성능 최적화를 제공함

JPA 옵션

  • 트랜잭션을 지원하는 쓰기 지연은 데이터를 버퍼로 모으는 것임
  • jpa 옵션을 켜야 됨
  • 트랜잭션을 컴이 할 때까지 인서트 SQL을 모을 수 있음
  • JDBC에 배치 SQL이라는 기능을 사용해서 한 번의 네트워크로 3개의 인서트 쿼리를 보낼 수 있음

JPA의 지연 로딩과 즉시 로딩

  • jpa는 지연 로딩과 즉시 로딩이라는 두 가지를 다 지원함
  • 객체 지향과 관계형 데이터베이스라는 개념을 두 가지 다 잘 알아야 jpa를 자유자재로 쓸 수 있음