1장 JPA 소개
1장 JPA 소개
SQL을 직접 다룰 때 발생하는 문제점
계층 분할이 어렵다.
반복적인 코드가 게속 된다.
(간단한 CRUD 라도 일일히 SQL을 작성해야 하고 일일히 SQL JDBC API 를 사용해서 변환작업도 해줘야한다.)
엔티티를 신뢰할수없다.
(DAO 를 열어서 어떤 SQL 이 실행되고있는지 일일이 확인해야 한다.)
SQL 에 의존적인 개발을 피하기 어렵다.
객체와 RDB 사이의 패러다임 불일치 문제
상속 (객체는 상속이라는 기능이 있지만 테이블은 없다.)
연관관계 (객체는 연관계를 가지고 참조에 접근하는데 반해 테이블은 외래키로 조인해서 연관 테이블을 조회한다.)
객체 그래프 탐색
객체 A가 있을 때 A가 참조하는 다른 객체 B, C, D 등을 A를 통해 참조하는 것을 객체 그래프 탐색이라고 한다. (참조를 사용해서 연관관계를 탐색하는 것을 객체 그래프 탐색이라 한다.)
SQL 을 사용하면 SQL에 따라 내가 어디까지 조회했는지 참조할수있는지 달라진다. 그렇기에 객체 그래프 탐색에 있어서 항상 DAO 를 열어서 SQL 을 직접 확인해야만한다.
JPA 에서는 연관된 객체를 사용하는 시점에 적절하게 SELECT 문을 날려준다. 흔히 지연로딩 이라 표현한다.
JPA 란 무엇인가?
자바 진영의 ORM 기술 표준
구현체는 Hibernate
통계 쿼리 같은 복잡한 쿼리 보단 실시간 처리용 쿼리에 더 최적화 되어있음
JPA 를 사용해야 하는 이유
생산성
쿼리문을 직접 작성하거나 일일히 객체를 테이블과 매핑해주지 않아도 되기에 개발자의 쿼리 부담이 줄어든다. 보일러 플레이트 코드 감
2. 유지보수성
SQL 이 아닌 객체를 중심으로 개발하기에 유지보수성 향상
RDB 와 객체 사이의 패러다임 불일치 해결 및 최적
객체 와 테이블 사이의 패러다임 해결로 객체중심 개발 가능
벤더의 독립성
다른 DB 를 사용하더라도 JPA 설정만 해주면 쿼리문 수정, 드라이브 관련 로직 수정할 필요 X
Last updated