[JPA] JDBC, SQL Mapper, ORM

호호빵·2022년 9월 2일
0

JPA

목록 보기
4/8

데이터 저장의 역사


90년대 이전 계층 구조 , 90년대 이후 계층 구조

  • 온라인을 활용한 비즈니스가 증가하면서 데이터의 영속성은 반드시 필요했고 데이터베이스를 활용해 데이터들이 지워지지 않도록 하였다.
  • 단순했던 Layerd Architecture는 클라우드 환경의 발달로 역할과 관심사를 세분화하여 위와 같이 계층을 나눔
  • 브라우저를 통해 요청이 들어오면 Domain Model에서 가공을 통해 Persistence layer(JDBC, SQL Mapper, ORM)를 거쳐 영속성을 부여

한눈에 보기




01. JDBC(Java Database Connectivity)

  • Java에서 DB에 접근하기위해 만든 API
  • 여러 DB Driver를 제공하기 때문에 사용자는 어떠한 데이터베이스를 쓰든 동일한 접근 로직으로 접속 가능

동작순서

JDBC Driver 로드  ->  DB 연결  ->  Statement 생성  ->  SQL문 전송  ->  결과 리턴  ->  연결 종료

1. DriverManage로 Connection 인스턴스를 받아옴
2. Statement를 이용하여 쿼리 실행
3. DB로부터 데이터 GET

단점

  • 직접 작성해야 하는 코드 많음 -> 중복 코드 발생
  • 커넥션을 관리해주어야 함
  • DB별로 적절한 예외처리 필요 -> 이러한 불편함 해결을 위해 SQL Mapper 등장!



02. SQL Mapper

  • 개발자가 직접 작성한 SQL문과 객체의 필드를 매핑하여 데이터를 객체화 해주는 프레임 워크
  • DBMS에 따라 문법이 다르기 때문에 DBMS에 종속적

Spring JDBC(JDBC Template)

  • JDBC에서 반복되는 작업들을 개발자가 하지 않아도 됨

MyBatis

  • SQL을 xml파일에 작성해놓고 코드와 SQL을 분리하여 사용하는 방식
  • 테이블의 필드가 추가되거나 삭제될 경우 이와 관련된 코드 수정 필요
  • 여전히 SQL 의존적인 개발이라 많은 시간 소요



03. ORM(Object Relational Mapper)

  • 관계형 데이터베이스와 객체지향은 설계 원칙이 다르기 때문에 사용 방법과 표현방식에 차이가 있을 수 밖에 (패러다임 불일치)
  • 객체와 DB테이블을 매핑하여 데이터를 객체화하는 것으로 ORM 등장!
  • 예) JPA, Hibernate, Spring Data JPA
  • ORM은 객체간의 관계를 바탕으로 SQL을 자동으로 생성하고 메서드를 통해 조작
SELECT * FROM user  -> userRepository.findAll();

장점

  • SQL을 직접 작성할 필요없이 자바 코드만으로 SQL 사용가능 -> 유자보수 용이
  • 필드가 추가되거나 삭제될 시 해당 엔티티만 수정하면 됨

단점

  • 프로젝트가 복잡해질수록 어려움
  • 복잡한 SQL의 경우 개발자가 직접 추가하여야 함(JPQL)






Layerd Architecture
Tech톡 JDBC, SQL Mapper, ORM
Tech톡 영상 정리 블로그

profile
하루에 한 개념씩

0개의 댓글

관련 채용 정보