본문 바로가기

dev/DB

Java 진영의 persistent framework


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에 대한 직접적인 컨트롤이 비교적 어렵다.
4. MyBatis
  • SQL Mapper이다.
  • JDBC 관련 설정, 결과 매핑을 대신해준다.
  • 장점 : SQL에 대한 직접적인 컨트롤이 용이하다.
  • 단점 : ORM에 비해 생산성이 비교적 낮다.



[참조]

[JDBC] JDBC, JPA/Hibernate, Mybatis의 차이 : https://gmlwjd9405.github.io/2018/12/25/difference-jdbc-jpa-mybatis.html

'dev > DB' 카테고리의 다른 글

window 함수  (0) 2019.03.10
그룹 함수  (0) 2019.03.10
SQL 표준 함수  (0) 2019.03.10
서브쿼리  (0) 2019.03.10
Join  (0) 2019.03.07