Categories

Tags

Spring 프로젝트를 진행할 땐 항상 Mybatis를 사용했다. DB주소 설정해주고 XML에 쿼리 작성해서 연결해주면 알아서 DB와 연동되다보니, 항상 별 생각 없이 개발을 해왔다.
한때 진행중인 프로젝트를 넘겨받아 Spring JPA를 사용해본 적이 있었다. 그동안 개발하던 방식과 달라서 많이 헤맸던 기억이 있다.
시간이 나면 개념을 정리해보자 생각했었지만, 시간은 나지 않는다. 시간을 내서 정리하고 기록해야 한다.

SQL Mapper

  • SQL 문장으로 직접 DB를 다룬다.
  • Mybatis, JdbcTempletes ..

ORM Object-Relation Mapping

  • 객체를 통해 간접적으로 DB를 다룬다.
  • 메서드 형태로 데이터를 조작하며, 객체간의 관계를 바탕으로 SQL을 자동으로 생성한다.
  • JPA, Hibernate ..

JDBC JAVA Database Connectivity

  • JAVA에서 DB에 접근할 수 있게 제공하는 API
  • JAVA에서 Data Access의 기초이며, 모든 Persistence Framework은 내부적으로 JDBC API를 사용함.

JPA - Java Persistent API

  • Java ORM 기술의 API 표준 명세
  • 표준 인터페이스를 모아둔 것
  • 구성요소
    • API
    • JPQL (JAVA Persistence Query Language)
    • 객체/관게 메타데이터
  • JPA의 구현체로 Hibernate, OpenJPA 등이 있으며 ORM Framework이라 부름

Hibernate

  • 내부적으로 JDBC API가 동작하며, SQL을 생성한다.
  • HQL (Hibernate Query Language)
    • 객체 지향적이며, 상속, 다형성, 관계등의 개념을 사용 가능
    • 자바 클래스와 프로퍼티명을 제외하고 대소문자 구분
    • 쿼리 결과로 객체 반환
    • 페이지네이션 등 SQL에서 지원되지 않는 기능 제공
  • 장점
    • 객체지향적 개발을 지원하므로, 비즈니스 로직에 집중할 수 있음
    • 테이블 생성, 변경, 관리가 편리함
  • 단점
    • 러닝 커브를 따라가지 못할 경우, 데이터 손실, 성능 저하가 발생할 수 있음

Mybatis

  • JDBC로 처리하는 설정과 매핑등을 간편하게 처리해준다
  • 객체 - SQL문 매핑관계만 이해하면 DB연동 부분이 쉽게 처리됨
  • XML, Annotation, Interface, POJO등으로 구성
  • SQL 작성에 익숙한 경우 편리함
  • DB 시스템에 종속적일 수 있음

TODO

  • JPA를 써보고, 경험적인 비교내용 포스팅