Spring

Hibernate 정리

dawn9 2022. 7. 15. 22:43

Hibernate

자바 언어를 위한 ORM 프레임워크로 JPA의 구현체, JPA 인터페이스 구현하며 내부적으로 JDBC API를 사용.

JPA(Java Programming Application)

자바 애플리케이션에서 관계형 DB 사용 방식을 정의한 인터페이스.

JDBC(Java Database Connectivity)

자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API.

데이터베이스에서 데이터를 쿼리하거나 업데이트하는 방법을 제공.

Hibernate 장점

  • 생산성
    Hibernate는 SQL을 사용하지 않고, 메소드 호출만으로 쿼리를 수행함으로써 SQL 반복 작업을 하지 않아 생산성 향상.
  • 유지보수
    테이블 컬럼이 변경되었을 때, 테이블과 관련된 DAO의 파라미터, 결과, SQL 등을 대신 수행함으로써 유지보수 측면에 이점이 있음.
  • 특정 DB에 종속적이지 않음
    JPA는 추상화된 데이터 접근 계층을 제공하여 특정 DB에 종속적이지 않음
    (DB를 바꾸려면 설정 파일에서 JPA에게 어떤 DB를 사용하는지만 알려주기만 하면 됨.)
  • 패러다임 불일치 해결
    상속, 연관 관계, 객체 그래프 탐색, 비교 등 객체와 관계형 데이터베이스와의 패러다임 불일치를 해결할 수 있음.
  • SQL에 의존하지 않고 개발 가능
    객체를 불러올 때 연관된 객체 또한 함꼐 불러와 SQL 중심이 아닌 객체 중심의 개발이 가능.

Hibernate 단점

  • 성능
    메소드 호출만으로 쿼리를 수행하는 것은 직접 SQL을 작성하는 것보다 성능이 좋지 않음.
  • 세밀함
    메소드 호출만으로 DB 데이터를 조작하기에는 한계가 있음. 이를 보완하기 위해 JPQL을 지원.
    NativeQuery를 지원해 SQL 자체 쿼리도 작성 가능.
  • 러닝커브
    공부해야 할 것이 많음.

Reference
경험의 연장선, https://livenow14.tistory.com/70
https://ko.wikipedia.org/wiki/JDBC
https://ko.wikipedia.org/wiki/%ED%95%98%EC%9D%B4%EB%B2%84%EB%84%A4%EC%9D%B4%ED%8A%B8