persistent framework
persistent layer(data access layer)를 다루는 프레임워크를 persistent framework 라고 한다.
persistent framework는 다음 두 가지로 분류할 수 있다.
1. SQL Mapper
- Object의 필드와 SQL 문을 매핑
- SQL 문을 이용해 직접 데이터베이스를 조작
- MyBatis
2. ORM
- Object 필드와 데이터를 매핑
- 코드를 통해 데이터를 조작 가능(ORM 프레임워크가 쿼리를 자동 생성)
- persistent API라고 할 수 있음
- JPA, Hibernate(JPA를 구현)
Java 진영의 persistent framework
1. JDBC(Java database connectivity)
- Java에서 DB접근을 할 수 있도록 하는 API
- Java 진영의 모든 Persistent framework는 내부적으로 JDBC API를 사용
- plain JDBC를 사용할 수도 있고, JDBC framework를 사용할 수도 있다(ex. spring JDBC)
2. JPA(Java Persistence API)
- Java ORM 기술에 대한 API
- JPA를 구현한 ORM Framework를 사용하여 JPA를 이용한다. (ex. Hibernate, EclipseLink, OpenJPA 등)
- 아래 그림을 보면 application 계층과 JDBC 인터페이스 계층 사이에 ORM Mapper가 추가된 것을 확인할 수 있다.
3. Hibernate
- 대표적인 JPA 구현체 중 하나
- ORM framework이기 때문에 SQL문 대신 메소드를 사용해 데이터에 접근한다.
- 단, SQL자체가 사용되지 않는 것은 아니다. Hibernate 내부에서는 JDBC API가 작동한다.
- 장점 : 데이터를 Object로 취급하기 때문에 객체지향적 개발이 용이하며, 쿼리보다 비즈니스 로직 자체에 집중할 수 있다.
- 단점 : 성능상 문제가 있을 수 있다. SQL에 대한 직접적인 컨트롤이 비교적 어렵다.
- SQL Mapper이다.
- JDBC 관련 설정, 결과 매핑을 대신해준다.
- 장점 : SQL에 대한 직접적인 컨트롤이 용이하다.
- 단점 : ORM에 비해 생산성이 비교적 낮다.
[참조]
[JDBC] JDBC, JPA/Hibernate, Mybatis의 차이 : https://gmlwjd9405.github.io/2018/12/25/difference-jdbc-jpa-mybatis.html