[영상후기][10분 테코톡] ⏰ 아마찌의 ORM vs SQL Mapper vs JDBC

박철현·2023년 4월 9일
0

영상후기

목록 보기
72/160

movie

  • Persistence(영속성) : 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성

  • 구현하는 방법
    1) JDBC만 이용
    2) Persistence Framework 이용

  • JDBC(Java Database Connectivity) : 자바에서 DB에 접속할 수 있는 자바 API
    -> DBMS 종류에 상관 없이 하나의 JDBC API를 이용해 DB작업 처리(각각의 DBMS는 이를 구현한 JDBC 드라이버를 제공)
    -> JDBC만 이용했을 시 단점
    --> 간단 SQL을 실행하는 데 중복된 코드를 반복적으로 사용
    --> DB에 따라 일관성 없는 정보를 가진 채로 Checked Exception 처리
    --> Connection과 같은 공유 자원을 제대로 릴리즈(반환) 해주지 않으면 시스템의 자원이 바닥나는 버그 발생

  • Persistence Faramework 사용 : JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발 + 안정적 구동 보장
    -> SQL 맵퍼와 ORM으로 나뉨

  • SQL Mapper : 객체 - SQL문 맵팽하여 데이터를 객체화 함
    -> 직접 작성한 SQL문의 질의 결과와 객체의 필드를 맵핑하여 데이터를 객체화 하는 것

  • SQL Mapper - JdbcTemplate
    -> 쿼리 수행 결과와 객체의 필드를 맵핑 & RowMapper 재활용
    -> JDBC에서 반복적으로 해야하는 많은 작업들을 대신 해줌

  • SQL Mapper - MyBatis
    -> 반복적인 JDBC 프로그래밍을 단순화하여 SQL 쿼리들을 XML 파일에 작성하여 코드와 SQL을 분리하여 관리
    -> JDBC만 사용하면 결과를 가져와서 객체의 인스턴스에 매핑하기 위한 많은 코드가 필요하겠지만 마이바티스는 그 코드들을 작성하지 않아도 되게 해준다.
    -> 동적 쿼리(상황에 따라 분기처리를 통해 쿼리를 동적으로 만드는 것) 지원
    -> 자동으로 Connection 관리를 해주면서 JDBC를 사용할 때의 중복 작업 대부분을 없애준다.
    -> 복잡한 쿼리나 다이나믹하게 변경되는 쿼리 작성이 쉽다.
    -> DAO로부터 SQL문을 분리하여 코드의 간결성 및 유지보수성 향상(관심사 분리)

  • JDBC와 SQL Mapper 모두 SQL을 개발자가 직접 작성함으로써 생기는 문제점을 피할 수 없음

  • DB에 종속적이지 않는 것이 JDBC 컨셉이나 사용하는 쿼리문법이나 데이터 타입은 DB마다 조금씩 다르기 때문에 쿼리문을 직접 작성할 경우 특정 DB에 종속적으로 사용

  • 테이블마다 비슷한 CRUD SQL-> 개발자가 일일이 쿼리를 작성하며 반복적인 DAO개발을 피할 수 없게 됨

  • 테이블 필드가 변경될 시 이와 관련된 모든 DAO의 SQL문, 객체의 필드 등을 수정해야 함(코드 상으로 분리했다 하더라도 논리적으로 의존)

  • SQL 의존적인 개발

  • 패러다임 불일치 : 객치지향(추상화, 상속, 다형성) - RDB(데이터 중심 구조) 각각 지향하는 목적이 다르기 때문에 사용방법과 표현방식에 차이가 있을 수 밖에 없다.
    -> 객체지향 설계일 수록 패러다임 불일치 심화

  • ORM : 객체와 관계형 DB를 맵핑(SQL 쿼리가 아닌 직관적 코드(메서드)로 데이터 조작

  • JPA : 자바 ORM 표준 명세로 인터페이스 모아둔 것 / JPA기술 사용하려면 JPA 인터페이스를 구현한 ORM 프레임워크 사용해야 함(하이버네이트, 이클립스 링크 등)

  • ORM을 사용하여 SQL문으로 부터 분리된 설계(DB에 의존하지 않은 상태에서 개발) 시 도메인과 비즈니스 로직 구현에 좀 더 집중할 수 있음.
    또한 DB 서버와 의존관계를 가지지 않는 구현 단계를 거치면서 더 빠른 구현과 테스트인 피드백 사이클을 돌 수 있으며 요구사항의 변화에 빠르게 대응할 수 있음

profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보