Hibernate 기초
hibernate는 자바 기반의 ORM(Object Relationship Mapper) 기술에 대한 명세인 JPA의 구현체의 한 종류 이다.
(자바 객체를 RDBMS의 하나의 ROW로 맵핑해준다.)
hibernate란?
- hibernate는 자바 언어를 위한 ORM 프레임워크 입니다.
- JPA의 구현체로 JPA 인터페이스를 구현하며, 내부적으로 JDBC API를 사용합니다.
JPA
- JPA는 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있는 점과 영속성 컨텍스트 제공이 큰 특징입니다.
- 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
- 라이브러리가 아닌 인터페이스 이므로 특정 기능을 하진 않습니다.
JDBC
- 자바 프로그래밍 언어와 다양한 데이터베이스 SQL 또는 테이블 형태의 데이터 사이에 독립적인 연결을 지원하는 표준입니다. (DB 작업을 위한 표준)
- DBMS 회사들(MySQL,MariaDB,h2 …등)이 JDBC 인터페이스를 구현하여 제공해요. 이를 JDBC 드라이버라고 하는데, 결국 JDBC 드라이버란 DBMS 회사들이 자신들의 데이터베이스 시스템에 접근 할 수 있도록 표준 JDBC 인터페이스에 명시된 메소드들을 구현한 것이라 볼 수 있습니다.
- JDBC API를 사용할 경우 하나의 자바 응용 프로그램만으로 JDBC 드라이버를 제공하는 어떤 종류의 관계형 DBMS에도 접근이 가능하고, 사용자들은 특정 회사의 데이터베이스의 정확한 사용 방법을 몰라도 JDBC API만 알면 데이터베이스 조작이 가능하게 됩니다.
hibernate의 장점
생산성
- hibernate는 SQL을 직접 사용하지 않고, 메서드 호출만으로 쿼리가 수행됩니다.
유지보수
- 테이블 컬럼이 변경되었을 때, 테이블과 관련된 DAO의 파라미터, 결과, SQL 등을 대신 수행해줘요. 이로 인해 유지보수성이 높아집니다.
특정 벤더에 종속적이지 않음
- JPA는 추상화된 데이터 접근 계층을 제공하기 때문에 특정 벤더에 종속적이지 않습니다.
- 설정 파일에서 JPA에게 어떤 DB를 사용하고 있는지를 알려주기만 하면 얼마든지 DB를 바꿀 수 있습니다.
패러다임 불일치 해결
- 상속, 연관 관계, 객체 그래프 탐색, 비교 등 객체와 관계형 데이터베이스와의 패러다임 불일치를 해결할 수 있습니다.
단점
성능
- 메서드 호출만으로 쿼리를 수행하는 것은 직접 SQL을 작성하는 것보다는 성능상 좋지 않습니다.
세밀함
- 메서드 호출만으로 DB 데이터를 조작하기에는 한계가 있어요. 이를 보완하기 위해 JPQL을 지원합니다.
- NativeQuery를 지원하여 SQL 자체 쿼리도 작성할 수 있습니다.
러닝커브
JPA는 Hibernate를 추상화한 인터페이스입니다.
refer
https://livenow14.tistory.com/70