Persistence 영속성
애플리케이션이 종료되어도 데이터가 사라지지 않고 저장되는 곳
Persistence Framework
JDBC 프로그래밍의 복잡함과 번거로움 없이 간단한 작업만으로 데이터베이스와 연동(자동으로 영속화)되는 시스템을 개발할 수 있다.
SQL Mapper
- Object와 SQL 필드를 매핑하여 데이터를 객체화하는 기술
- SQL에 의존적이다.
- SQL을 직접 작성하여 쿼리 수행 결과를 어떤 객체에 매핑할지 결정
- 객체와 테이블간의 매핑이 아님
- 예시: MyBatis, JdbcTemplate
MyBatis
- xml 파일에 따로 SQL을 관리하고 매핑을 도와준다.
- 동적쿼리를 지원한다.
장점
단점
- DBMS에 종속적이다.
- 비슷한 쿼리를 반복적으로 작성해야 한다.
- 객체와 관계형 테이블 구조 사이에 패러다임 불일치 발생
- ex> 객체의 상속관계를 데이터베이스는 지원하지 않음
Object Relational Mapper (ORM)
- Object와 RDB table을 매핑하여 데이터를 객체화하는 기술
- ORM의 메서드를 사용하면 자동으로 SQL이 만들어진다.
- 예시: Hibernate, EclipseLink, DataNucleus
Java Persistence API
- Java 진영에서 ORM 기술 표준으로 사용되는 인터페이스 모음
- JPA를 구현한 대표적인 오픈소스는 Hibernate가 있다.
장점
- SQL이 아닌 객체 중심 개발이 가능하다.
- 개발자는 비즈니스 로직을 구성하는데에만 집중할 수 있다.
- 생산성과 유지보수성이 높아진다.
- 객체와 RDB 테이블 사이 패러다임의 불일치를 해결한다.
- DBMS에 종속적이지 않다.
단점
- 설계가 잘못된 경우 속도 저하와 일관성을 무너뜨릴 수 있다.
- 복잡한 쿼리는 속도를 위해 별도 튜닝이 필요하기 때문에 결국 SQL문을 작성해야 한다.
- 이 경우 JPQL을 사용하거나, SQL Mapper와 혼용한다.
- 학습 비용이 비싸다.
출처