자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법으로, SQL을 전혀 몰라도 자바 언어로만 데이터베이스에 접근해서 원하는 데이터를 받아올 수 있다. 즉, 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 하는 도구를 의미한다.
데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터 특성을 의미
영속성을 갖지 않는 데이터는 단지 메모리만 존재하여 프로그램 종료 시 모두 잃어버리게 됨
메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스를 활용하여 영구적으로 저장하여 영속성을 부여한다.
1) JDBC - java에서 사용
2) SpringJDBC
3) Persistence Framework - Hibernate, Mybatis
프로그램의 아키텍처에서 데이터에 영속성을 부여해주는 계층을 의미한다.
JDBC를 이용하여 직접 구현할 수 있으나 Persistence framework을 이용한 개발이 많이 이루어짐
JDBC 프로그래밍의 복잡함과 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적인 구동을 보장한다.
SQL Mapper vs. ORM으로 구분할 수 있다.
SQL <- 매핑 -> Object 필드
SQL 문장으로 직접 데이터베이스 데이터를 다룬다.
예) Mybatis JdbcTemplates
데이터베이스 데이터 <- 매핑 -> Object 필드
객체와 관계형 데이터 베이스의 데이터를 자동으로 매핑/연결해주는 것을 의미한다.
직관적인 코드로 데이터 조작이 가능하며, 객체 간의 관계를 바탕으로 SQL을 자동으로 생성한다.
Persistant API라고도 함 (JPA, Hibernate)
JDBC는 DB에 접근할 수 있도록 Java에서 제공하는 API이다. 모든 Persistence Framework는 내부적으로 JDBC API를 이용한다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.
ORM을 사용하기 위한 표준 인터페이스를 모아둔 것을 의미한다.
자바 객체와 데이터베이스를 연결하여 데이터를 관리
JPA의 구성
1. Javax.persistence 패키지로 정의된 API
2. JPQL
3. 객체/관계 메타데이터
JPA는 인터페이스이기 때문에 원하는 구현체를 선택해서 사용해야한다. (예. Hibernate)
JPA의 구현체 중 하나이다.
HQL이라 불리는 쿼리 언어를 포함하고 있으며, HQL는 객체지향적이며, 상속 다형성 관계 등의 강점을 누릴 수 있다. 쿼리 결과로 객체를 반환하며 개발자에 의해 생성되고 직접적 접근이 가능하다.
출처
https://gmlwjd9405.github.io/2018/12/25/difference-jdbc-jpa-mybatis.html