Hibernate는 자바 언어를 위한 ORM 프레임워크.
JPA의 구현체로, JPA 인터페이스를 구현, 내부적으로 JDBC API 사용.
JPA는 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있다는 점과, 영속성 컨텍스트(엔티티를 영구 저장하는 환경) 제공이 큰 특징.
자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스.
라이브러리가 아닌 인터페이스로 특정 기능을 하진 않는다.
자바 프로그래밍 언어와 다양한 데이터베이스 or SQL or 테이블 형태의 데이터 사이의 독립적인 연결을 지원하는 표준.
-> DB 작업을 위한 표준.
DBMS 회사들은 JDBC 인터페이스를 구현해 제공.
-> JDBC 드라이버
JDBC 드라이버?
DBMS 회사들이 자신들의 데이터베이스 시스템에 접근할 수 있도록 표준 JDBC 인터페이스에 명시된 메소드들을 구현한 것.
-> JDBC API를 사용할 시 하나의 자바 응용 프로그램만으로 JDBC 드라이버를 제공하는 어떤 종류의 관계형 DBMS에도 접근 가능, 사용자들은 특정 회사의 DB의 정확한 사용방법을 몰라도 JDBC API만 알면 DB 조작 가능
테이블 컬럼이 변경되었을 때, 테이블과 관련된 DAO의 파라미터, 결과, SQL 등 대신 수행. -> 유지보수 좋음
특정 벤더(판매회사)에 종속적이지 않음
-> JPA는 추상화된 데이터 접근 계층을 제공하기 때문에 특정 벤더에 종속적이지 않아요.
-> 설정 파일에서 JPA에게 어떤 DB를 사용하고 있는지를 알려주기만 하면 얼마든지 DB 변경 가능.
패러다임 불일치 해결
-> 상속, 연관 관계, 객체 그래프 탐색, 비교 등 객체와 관계형 데이터베이스와의 패러다임 불일치를 해결할 수 있다.
JPA는 Hibernate를 추상화한 인터페이스.
Hibernate properties를 검색해서 더 공부해야함