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 를 사용해야 하는 이유

  1. 생산성

  • 쿼리문을 직접 작성하거나 일일히 객체를 테이블과 매핑해주지 않아도 되기에 개발자의 쿼리 부담이 줄어든다. 보일러 플레이트 코드 감

2. 유지보수성

  • SQL 이 아닌 객체를 중심으로 개발하기에 유지보수성 향상

  1. RDB 와 객체 사이의 패러다임 불일치 해결 및 최적

  • 객체 와 테이블 사이의 패러다임 해결로 객체중심 개발 가능

  1. 벤더의 독립성

  • 다른 DB 를 사용하더라도 JPA 설정만 해주면 쿼리문 수정, 드라이브 관련 로직 수정할 필요 X

Last updated