FIF's 코딩팩토리

JDBC, JPA, Mybatis 차이점 본문

Database(데이터 베이스)

JDBC, JPA, Mybatis 차이점

FIF 2020. 7. 2. 16:42
반응형

들어가기 앞서 영속성에 대한 이해가 필요하다.

 

영속성(Persistence)

1. 데이터를 생성한 프로그램이 종료되더라도 사리지지 않는 데이터의 특성을 말한다.

 

2. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램이 종료되면 모두 잃어버리게 된다. 때문에 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 데이터를 영구적으로 저장하여 영속성을 부여한다.

 

3. Persistence Layer

     A. 프로그램의 아키텍처에서 데이터에 영속성을 부여해주는 계층을 말한다.

 

     B. JDBC를 이용하여 직접 구현할 수 있지만 Persistence Framework를 이용한 개발이 많다.

 

     C.     

          i. 프레젠테이션 계층(Presentation layer) - UI계층 이라고도 함

 

          ii. 애플리케이션 계층(Application layer) - 서비스계층 이라고도 함

 

          iii. 비즈니스 논리 계층(Business logic layer) - 도메인계층 이라고도 함

 

          iv. 데이터 접근 계층(Data access layer) - 영속계층 이라고도 함

 

SQL Mapper와 ORM

Persistence Framework는 SQL Mapper ORM으로 나뉜다.

 

1. ORM은 데이터베이스 객체를 자바 객체로 매핑함으로써 객체 간의 관계를 바탕으로 SQL을 자동으로

    생성해주지만, SQL Mapper는 SQL을 명시해줘야 한다.

 

2. ORM은 관계형 데이터베이스의 '관계'를 Object에 반영하는것이 목적이라면,

    SQL Mapper는 단순히 필드를 매핑시키는 것이 목적이라는 점에서 지향점의 차이가 있다.

 

SQL Mapper

1. SQL문장으로 직접 데이터베이스를 다룬다.

     A. 즉 SQL Mapper는 SQL을 명시해 줘야 한다.

 

     B. Ex) MyBatis, jdbcTemplates등

 

ORM

1. 객체를 통해 간접적으로 데이터베이스를 다룬다.

 

2. 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다.

 

3. Persistence API라고도 할 수 있다.

     A. Ex) JPA, Hibernate 등

 

 


 

JDBC(Java Database Connectivity)

1. JDBC는 DB에 접근할 수 있도록 Java에서 제공하는 API이다. 모든 Java Data Access 기술의 근간으로 모든 Persistence Framework는 내부적으로 JDBC API를 사 용한다.

 

JPA(Java Persistent API)

1. 자바 ORM기술에 대한 API표준 명세로 Java에서 제공하는 API이다.

     A. 자바 플랫폼 SE와 자바 플랫폼 EE를 사용하는 응용프로그램에서 관계형 데이터베이스의 관리를 표현하는

     자바 API이다.

 

     B. 즉, JPA는 ORM을 사용하기 위한 표준 인터페이스를 모아둔 것이다.

     

     C. 기존 EJB에서 제공되던 엔티티 빈(Entity Bean)을 대체하는 기술이다.

 

2. JPA 구성요소(세가지)

     A. javax.persistence 패키지로 정의된 API 그 자체

 

     B. JPAL(Java Persistence Query Language)

 

     C. 객체/관계 메타데이터

 

3. 사용자가 원하는 JPA 구현체를 선택해서 사용할 수 있다.

     A. JPA의 대표적인 구현체로는 Hibernate, EclipseLing, DataNucleus, OpenJPA, TopLink, Essestials등이 있다.

 

     B. 이 구현체들을 ORM Framework라고 부른다.

 

Mybatis

 1. 개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 SQL Mapper이다.

 

 

2. JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다.

 

3. 데이터베이스 record에 원시 타입과 Map 인터페이스, 그리고 자바 POJO를 설정해서 매핑하기

    위해 xml과 Annotation을 사용할 수 있다.

 

4. MyBatis는 원래 Apache Foundation의 iBatis였으나 생산성, 개발 프로세스, 커뮤니티 등의

   이유로 Google Code로 이전되면서 이름이 바뀌었다.

 

5. 장점

     A. SQL에 대한 모든 컨트롤을 하고자 할 때 매우 적합하다.

 

     B. SQL쿼리들의 최적화가 잘되어 있을때 유용하다.

 

6. 단점

     A. 애플리케이션과 데이터베이스 간의 설계에 대한 모든 조작을 하고자 할 때는 적합하지 않다.

          왜냐하면 애플리케이션과 데이터베이스의 구조화가 잘 되도록 많은 설정부분을 바꾸어야 하기 때문이다.

 

 

 

 

 

 

반응형
Comments