ORM vs SQL Maper vs JDBC

Y39·2023년 4월 1일
0

toBeProgrammer

목록 보기
73/88

Persistence

: 데이터를 생성한 프로그램이 종료되어도 사라지지 않는 것

JDBC

: java에서 DB를 연결할 수 있도록 하는 것

  • 특징: DB의 종류와 관계없이 같은 작업을 진행할 수 있도록함.
  • 단점:
    • 간단한 sql을 실행해도 중복된 코드를 하게 됨
    • DB에 따라서 일관성이 없어짐
    • connection을 제대로 반환하지 않으면 시스템 자원이 바닥남

Persistence Framwork

: 위의 단점을 극복하기 위해서, 더 빠른 개발을 위해 사용하는 프레임워크

SQL Mapper

: sql을 직접 작성해서 SQL과 객체를 매핑을 통해 데이터를 객체화

  • MyBatis
  • 특징
    • 쿼리를 xml에 작성
    • @Mapper에서 xml의 쿼리와 메소드를 1:1 매칭시킴
    • 동적 쿼리를 지원해줌
  • 장점:
    • 기존에 비해서 작성해야할 코드가 줄어든다.
    • 쿼리 수행 결과를 객체를 받을 수 있어 편리함
    • 반복적으로 할 작업이 줄어들음
  • 단점:
    • SQL문을 반복적으로 작성
    • 쿼리문을 직접 작성하게 되어 DB에 종속되어 있음
    • DAO 개발이 반복됨
    • 테이블 필드가 변경될 때 DAO, SQL을 모두 직접 수정
    • SQL에 의존적인 개발을 하게 됨

패러다임 불일치 문제

  • RDB: 데이터 중심의 구조
  • 객체지향: 추상화, 상속, 다형성
  • RDB와 객체지향은 지향하는 목적이 달라서 괴리가 생김

ORM

: DB data와 Object를 매핑

  • JPA(Hibernate)
    • JPA는 인터페이스
    • Hibernate는 JPA를 직접 구현한 프레임워크
  • 특징
    • sql가 아닌 메서드(코드)로 데이터 조작
  • 장점
    • 패러다임 불일치 문제 해결
    • 쿼리문으로 부터 자유로워져서 생산성이 좋아짐
    • 유지보수에 쉽다.
  • 단점
    • 복잡한 쿼리 사용이 어렵다.
      • 보완1: JPA에서 JPQL을 지원
      • 보완2: DB의 자체 쿼리도 작성할 수 있음
      • 보완3: SQL Mapper 혼용 가능

패러다임 불일치 문제 해결

  • 상속
    • RDB는 상속이 없음
    • 별도의 엔티티로 구현
  • 연관관계
    • RDB의 외래키 사용
  • 비교
    • 같은 트랜잭션일 때 동일성 보장을 해줌
profile
System.out.print("Bold")

0개의 댓글