데이터들이 프로그램이 종료되어도 사라지지않고 어떤 곳에 저장되는 개념을 영속성(Persistence)이라고 함. 자바에서는 데이터의 영속성을 위한 JDBC를 지원해주는데, 이는 매핑 작업을 개발자가 일일히 수행해야하는 번거로움이 있음. SQL Mapper와 ORM은 개발자가 직접 JDBC Programming을 하지 않도록 기능을 제공해주는 Persistence Framework 종류임.
기존 JDBC만의 사용으로 쿼리문을 만들어 요청하는 과정은 쿼리문이 조금만 길어져도 관리가 힘들고 번거로움. 따라서 JPA와 MyBatis라이브러리를 사용하여 문제를 해결할 수 있음.
Object와 SQL의 필드를 매핑하여 데이터를 객체화하는 기술.
객체와 테이블간의 관계를 매핑하는 것이 아니라 SQL문을 직접 작성하고 쿼리 수행 결과를 어떠한 객체에 매핑할지 바인딩하는 방법. DBMS에 종속적인 문제가 있으며, 종류로는 JdbcTemplate, MyBatis가 있음.
MyBatis를 이용한 개발은 데이터 중심 모델링(테이블 설계)를 우선시하며 객체지향의 장점(추상화, 캡슐화, 정보은닉, 상속, 다향성)을 사용하지 않고 객체를 단순히 데이터 전달 목적(VO, DTO)에만 사용.
MYBatis를 이용하여 개발해 보면 유사한 CRUD 반복작업이 많으며 테이블에 약간의 수정만 있어도 관련된 DAO들에 변경이 있을 수 있음. 데이터베이스와 매우 강한 의존성을 갖고 있음.
객체와 DB 테이블을 연결(매핑)해주는 기술.
객체지향 패러다임을 이용하여 데이터베이스로부터 데이터를 쿼리하고 조작할 수 있도록 해주는 기술.
개발자가 반복적인 SQL을 직접 작성하지 않으며 ORM에서 제공하는 메서드, 코드 등을 이용.
DBMS에 종속적이지 않으며 복잡한 쿼리의 경우 JPQL을 사용하거나 SQL Mapper을 혼용하여 사용 가능.
JPA란 자바 ORM 기술에 대한 API 표준 명세.
JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이며 JPA를 사용하기 위해서는 JPA를 구현한 Hibernate, EclipseLink, DataNucleus 같은 ORM 프레임워크를 사용해야 함.
Ref.
victolee, yeonjigonji.log