[Java] JPA와 Hibernate의 관계

윤동환·2023년 2월 5일
0

Java

목록 보기
2/3
post-thumbnail

참고 블로그

JPA란?

Java Persistence API의 약자로, 자바 표준 ORM(Object Relational Mapping)입니다.

자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스입니다.
라이브러리가 아닌 인터페이스이므로 특정 기능을 하진 않아 별도로 Hibernate같은 구현체가 필요합니다.

Hibernate란?

ORM기술에 대한 명세서인 JPA(Java Persistence API)의 구현체의 한 종류입니다.

장점

  • SQL을 직접 사용하지 않고, 메소드 호출만으로 쿼리를 수행시킬 수 있습니다. SQL 반복작업을 하지 않아 생산성이 높아집니다.
  • 테이블 컬럼이 변경되었을 때, 테이블 관련 DAO의 파라미터, 결과, SQL등을 대신 수행하여 유지보수 측면이 좋아집니다.
  • JPA는 추상화된 데이터 접근 계층을 제공하기 때문에 특정 벤더에 종속적이지 않습니다. (JPA에게 어떤 DB를 사용할지 알려줌으로써 손쉽게 DB변경이 가능합니다.)
  • 상속, 연관관계 등 객체와 RDB간 패러다임 불일치를 해결할 수 있습니다.

단점

  • 직접 SQL작성하는 것보다 메서드 호출로 인하여 쿼리를 수행하기에 성능이 좋지 않습니다.
  • 메서드 호출만으로 DB 데이터를 조작하기에 한계가 있어 보완하기 위하여 JPQL을 지원합니다. (NativeQuery를 지원하여 자체 SQL쿼리를 작성할 수도 있다.)
  • 러닝커브가 있다.

Java와 DB의 연결 방식

JDBC란?

자바 프로그래밍 언어와 다양한 데이터베이스 SQL 또는 테이블 형태의 데이터 사이에 독립적인 연결을 지원하는 표준

DBMS회사들이 JDBC인터페이스를 구현하여 제공하며 이를 JDBC드라이버라고 한다. (DBMS회사들이 자신들의 DB 시스템이 접근할 수 있도록 JDBC 인터페이스에 명시된 메소드들을 구현한 것이라 볼 수 있다.)

JDBC API 사용 어플리케이션 기본 구성도

사용자들은 JDBC API의 사용법만 알아도 JDBC 드라이버를 제공하는 DBMS를 조작할 수 있게됩니다.

추가적으로 적자면!
Spring Data JPA란?

JPA를 쓰기 편하게 만들어 놓은 모듈

JPA를 한단계 추상화 시켜 Repository라는 인터페이스를 제공함으로써 이루어집니다. Repository인터페이스에 정해진 규칙대로 메소드를 입력하면, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어 Bean으로 등록해줍니다.

profile
모르면 공부하고 알게되면 공유하는 개발자

0개의 댓글