Book/자바 ORM 표준 JPA 프로그래밍

자바 ORM 표준 JPA 프로그래밍 1장

버스는그만 2023. 6. 21. 00:08

SQL을 직접 다룰 때 발생하는 문제점

  • 반복되는 CRUD에 대한 쿼리, JDBC 작성
  • SQL에 대해 의존적임
    • 물리적으로 SQL과 JDBC API를 숨겨도 논리적으로 엔티티와 아주 강한 의존 관계를 가지고 있기 때문에 엔티티 객체를 하나 변경해도 DAO의 CRUD코드와 SQL 대부분을 변경해야한다.
  • 패러다임 불일치

JPA란 무엇인가?

  • JPA란 자바 진영의 ORM 기술 표준이다.(ORM: 객체와 관계형 데이터베이스를 매핑한다는 뜻)

persist가 실행되면 아래와 같이 JPA가 INSERT SQL문을 작성해준다.

  • Entity 분석
  • INSERT SQL 생성
  • JDBC API 사용
  • 패러다임 불일치 해결

ORM은 단순한 SQL문을 생성해주는 것이 아니라 다양한 패러다임 불일치 문제들도 해결해준다. 덕분에 개발자는 데이터 중심인 관계형 데이터베이스를 사용해도 객체지향 애플리케이션 개발에 집중할 수 있다.

과거 자바 빈즈(EJB)라는 기술 표준에 엔티티 빈이라는 ORM 기술도 포함되어 있었다. 하지만 너무 복잡하고 기술 성숙도도 떨어졌으며 지비 엔터프라이즈 애플리케이션 서버에서만 동작했다. 이때 하이버네이트라는 오픈소스 ORM 프레임워크가 등장했는데  EJB의 ORM 기술과 비교해서 가볍고 실용적인 데다 기술 성숙도도 높았다. 또한 자바 엔터프라이즈 애플리케이션 서버 없이도 동작해서 많은 개발자가 사용하기 시작했다. 결국 EJB 3.0에서 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준이 만들어졌는데 이것이 바로 JPA다.

JPA를 사용해야 하는 이유

  • 생산성: 반복된 SQL, JDBC API 등을 JPA가 대신 처리해주며 DDL 문을 자동으로 생성해주는 기능과 패러다임 불일치 해결로 생산성 증가
  • 유지보수: 엔티티에 변경 사항이 있을 경우 SQL과 JDBC 수정을 JPA가 대신 해줌
  • 성능: 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회를 제공해준다.
  • 데이터 접근 추상화와 벤더 독립성: 특정 데이터베이스 기술에 종속되지 않도록 도와준다.