데이터를 생성한 프로그램이 종료되더라고 사라지지 않는 데이터의 특성
영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램이 종료되면 모두 잃어버린다.
파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 데이터를 영구적으로 저장하여 영속성을 부여한다.
즉, 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터를 말한다.
데이터를 데이터베이스에 저장하는 과정을 도와주고 자동화하는 매개 소프트웨어
데이터를 가공하는 자바 객체 층과 데이터를 저장하는 데이터베이스 층 사이를 매끄럽게 연결하는 이음매
SQL Mapper와 ORM으로 나뉜다.
ORM은 데이터베이스 객체를 자바 객체로 매핑함으로써 객체 간의 관계를 바탕으로 SQL을 자동으로 생성해주지만, SQL Mapper는 SQL을 명시해줘야 한다.
객체(Object)와 관계형 데이터베이스(RDBMS)를 매핑(연결)하여 데이터베이스 테이블을 객체지향적으로 사용하기 위한 기술
객체를 통해 간접적으로 데이터베이스를 다룬다.
관계형 데이터베이스의 '관계'를 객체에 반영하는 것이 목적이다.
Persistence API라고도 할 수 있다.
Ex. JPA, Hibernate
객체(Object)와 SQL문을 매핑하여 데이터를 객체화하는 기술
SQL문으로 직접 데이터베이스를 다루므로 SQL문을 명시해줘야 한다.
Ex. MyBatis, jdbcTemplates
JDBC는 DB에 접근할 수 있도록 Java에서 제공하는 API이다. 모든 Java Data Access 기술의 근간으로 모든 Persistence Framework는 내부적으로 JDBC API를 사용한다.
자바 ORM 기술에 대한 API 표준 명세로 Java에서 제공하는 API이다.
자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
즉, ORM을 사용하기 위한 표준 인터페이스를 모아둔 것이다.
'인터페이스'이기 때문에 JPA를 사용하기 위해서는 JPA를 구현한 ORM Framework를 사용해야 한다.
JPA의 대표적인 구현제로는 Hibernate, EclipseLink, DataNucleus, OpenJPA 등이 있다.
개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 SQL Mapper
JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다.
데이터베이스 record에 원시 타입과 Map 인터페이스, 자바 POJO를 설정해서 매핑하기 위해 xml과 Annotation을 사용할 수 있다.
장점
SQL에 대한 모든 컨트롤을 하고자 할 때 매우 적합하다.
SQL 쿼리들의 최적화가 잘되어 있을 때 유용하다.
단점
애플리케이션과 데이터베이스 간의 설계에 대한 모든 조작을 하고자 할 때는 적합하지 않다. 애플리케이션과 데이터베이스의 구조화가 잘 되도록 많은 설정 부분을 바꿔야 하기 때문이다.