[DataBase] MyBatis에서 JPA로

P__.mp4·2022년 8월 21일
0
post-thumbnail

먼저

MyBatis란?

객체 지향 언어(Object Oriented Programming)인 Java와 관계형 데이터베이스와의 프로그래밍을 보다 싶게 도와주는 퍼시스턴스 프레임워크(persistence framwork)이다.

MyBatis는 JDBC를 좀 더 편하게 사용할 수 있도록 객체SQL이나 저장 프로시저와 매핑해준다.

장점

  • 다른 프레임워크들에 비해 간단하다.
  • 소스 코드와 SQL의 분리(생산성, 작업 분배)
  • SQL을 직접 다룰 수 있다(복잡한 쿼리, 함수, 저장 프로시저 등)

단점

  • 반복적인 코드와 CRUD SQL 작업
  • SQL과 데이터베이스 벤더에 대한 종속성

각각의 테이블에 대해 CRUD가 반복된다!!
또한 SQL 그 자체를 직접 다룸으로 종속성적이다. (Oracle → MySQL XX)


JPA (Java Persistence API)를 사용해야 하는 이유

  • 생산성
    • 반복적인 CRUD SQL을 개발자가 직접 작성하지 않아도된다.
    • Spring Data JPA 사용 시, interface 선언만으로 쿼리 구현이 가능하여 관리 도구 등에서 가볍게 사용할 수 있는 CRUD 쿼리를 손쉽게 대처 가능하다.
  • 유지보수
    • 컬럼 추가/삭제 시 직접 관련된 CRUD 쿼리를 모두 수정하는 대신 JPA가 관리하는 모델(Entity)을 수정하면 된다.
  • 데이터 접근 추상화와 벤더 독립성
    • 데이터베이스 벤더마다 미묘하게 다른 데이터 타입이나 SQL을 JPA를 이용하면 손쉽게 해결할 수 있다.
  • SQL 중심적인 개발에서 객체 중심으로 개발
  • 패러다임 불일치 해결
    • JPA는 객체와 관계형 데이터베이스 사이의 패러다임의 불일치로 발생하는 문제를 해결(상속, 연관 관계, 객체 그래프 탐색 등)

💽 JPA란?

Java Persistence API

  • 자바 진영의 ORM 기술 표준

ORM(Object-Relational Mapping)

  • 데이터베이스 객체를 자바 객체로 매핑하여 객체 간의 관계를 바탕으로 SQL을 자동으로 생성
  • 객체가 테이블이 되도록 매핑 시켜주는 프레임워크

주의!

JPA는 Java Persistence API의 약자로, 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을!!! 정의한 인터페이스에 불가하다. 즉, JPA는 ORM(데이터베이스 객체를 자바 객체로)을 위한 기술 명세일뿐이다.

ORM 방식으로 프로그래밍을 하기 위해서는 JPA의 구현체가 필요한 것이다.

JPA 실제 구현체 : Hibernate, EclipseLink, DataNuclues

Spring Data JPA

  • Spring Data
    • 다양한 데이터 저장소에 대한 접근을 추상화하기 위한 Spring 프로젝트
    • JPA, JDBC, Redis, MongoDB, Elasticsearch 등
  • Spring Data JPA
    • Repository 추상화를 통해 interface 선언만으로 구현 가능
    • 메서드 이름으로 쿼리 생성
    • Web Support(페이징, 정렬, 도메인 클래스 컨버터 등)
profile
개발은 자신감

0개의 댓글