공부 시작
- 회사에서 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를 자유자재로 쓸 수 있음