자바 진영의 ORM 표준(인터페이스) , 구현체들은 따로 있다! (Hibernate가 대표적 구현체)

ORM이란? → Object-Relational-Mapping(객체 관계 매핑)

객체는 객체대로 설계하고, 관계형 DB는 관계형D DB처럼 설계하면 ORM이 매핑!

잘 모르고 썻었던 Spring Data JPA, QueryDSL 은 JPA를 편리하게 사용하기 위한 도구!

안에서 JPA가 엔티티 분석하고~ 쿼리문도 짜주고, 결국 JDBC API를 쓴다!!!

image.png

JPA는 아래와 같이 객체 상속관게, Table간의 연관관계의 패러다임 불일치를 해결해준다!

image.png

쿼리도 짜서 JDBC API를 사용하므로, 개발자는 객체지향적인 언어에 집중하면 된다!!

DB의 FK 조인 작업을 직접 하지 않고도,단순히 엔티티의 필드 접근으로 연관된 객체를 편하게 따라갈 수 있음!(객체 그래프 탐색 편해짐, @ManyToOne, @OneToMany만 잘 설정해주면..!)

image.png

다음은 JPA의 성능 최적화 방법이다.! 1차 캐시가 존재해서 동일한 쿼리문을 날린다면 캐시에서 가져오기 때문에 SQL 쿼리문을 한번만 날리게 된다!

image.png