Persistence
: 데이터를 생성한 프로그램이 종료되어도 사라지지 않는 것
JDBC
: java에서 DB를 연결할 수 있도록 하는 것
- 특징: DB의 종류와 관계없이 같은 작업을 진행할 수 있도록함.
- 단점:
- 간단한 sql을 실행해도 중복된 코드를 하게 됨
- DB에 따라서 일관성이 없어짐
- connection을 제대로 반환하지 않으면 시스템 자원이 바닥남
Persistence Framwork
: 위의 단점을 극복하기 위해서, 더 빠른 개발을 위해 사용하는 프레임워크
SQL Mapper
: sql을 직접 작성해서 SQL과 객체를 매핑을 통해 데이터를 객체화
- MyBatis
- 특징
- 쿼리를 xml에 작성
- @Mapper에서 xml의 쿼리와 메소드를 1:1 매칭시킴
- 동적 쿼리를 지원해줌
- 장점:
- 기존에 비해서 작성해야할 코드가 줄어든다.
- 쿼리 수행 결과를 객체를 받을 수 있어 편리함
- 반복적으로 할 작업이 줄어들음
- 단점:
- SQL문을 반복적으로 작성
- 쿼리문을 직접 작성하게 되어 DB에 종속되어 있음
- DAO 개발이 반복됨
- 테이블 필드가 변경될 때 DAO, SQL을 모두 직접 수정
- SQL에 의존적인 개발을 하게 됨
패러다임 불일치 문제
- RDB: 데이터 중심의 구조
- 객체지향: 추상화, 상속, 다형성
- RDB와 객체지향은 지향하는 목적이 달라서 괴리가 생김
ORM
: DB data와 Object를 매핑
- JPA(Hibernate)
- JPA는 인터페이스
- Hibernate는 JPA를 직접 구현한 프레임워크
- 특징
- 장점
- 패러다임 불일치 문제 해결
- 쿼리문으로 부터 자유로워져서 생산성이 좋아짐
- 유지보수에 쉽다.
- 단점
- 복잡한 쿼리 사용이 어렵다.
- 보완1: JPA에서 JPQL을 지원
- 보완2: DB의 자체 쿼리도 작성할 수 있음
- 보완3: SQL Mapper 혼용 가능
패러다임 불일치 문제 해결