JDBC vs SQL Mapper

sylvie·2022년 8월 7일
0

JAP를 사용하는 이유를 알아보기 위해 일단 JAP가 생긴 배경과 기존 기술들과의 차이점을 먼저 알아보겠습니다.

JDBC vs SQL Mapper vs ORM

Spring Framework로 개발할 때 Data Access Layer에서 사용하는 기술은 크게 3가지입니다.
1. JDBC
2. SQL Mapper (ex:MyBatis)
3. ORM (ex:JPA)

위의 기술들은 영속성을 구현하기 위해 나왔습니다.

영속성(Persistence)이란?

  • 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성.
  • 객체지향 프로그램에서 객체의 상태는 단지 메모리에서만 존재하고 프로그램이 종료되면 휘발되는 형태.

이처럼 객체의 상태를 DB에 저장하면서 객체에게 영속성을 부여하고있다.

JDBC란?


  • Java Database Connectivity의 약자
  • 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API
  • 자바 애플리케이션에서 DBMS의 종류에 상관없이, 하나의 JDBC API를 이용해 DB 작업을 처리
  • 각각의 DBMS는 이를 구현한 JDBC 드라이버를 제공한다.

JDBC의 단점.

  1. 쿼리 실행 전과 후에 많은 코드를 작성해야 한다.
  2. 데이터베이스 로직에서 예외 처리 코드를 수행해야 한다.
  3. 트랜잭션을 처리해야 한다.
  4. 이러한 모든 코드를 반복하기 때문에 비효율적이다.
public Optional<Member> findByName(String name) {
        String sql = "select * from member where name = ?";
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            conn = getConnection();
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, name);
            rs = pstmt.executeQuery();
            if (rs.next()) {
                Member member = new Member();
                member.setId(rs.getLong("id"));
                member.setName(rs.getString("name"));
                return Optional.of(member);
            }
            return Optional.empty();
        } catch (Exception e) {
            throw new IllegalStateException(e);
        } finally {
            close(conn, pstmt, rs);
        }
    }
  • 1개의 클래스에 SQL 및 DB 연결, 자바 언어가 모두 존재하기 때문에 재사용성이 좋지 않음.

myBatis

  • 개발자가 지정한 SQL, 저장프로시저 그리고 몇 가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크 중 하나. (=JDBC작업을 간편하게 해주는.)
  • 데이터베이스 레코드에 원시타입과 Map 인터페이트 그리고 자바 POJO를 설정해서 매핑하기 위한 XML이나 어노테이션을 사용할수 있음.
  • SQL문이 어플리캐이션 소스 코드로부터 분리됨.
  • JDBC를 통해 수동으로 셋팅한 파라미터와 결과 매핑을 대신 해주어 JDBC로 처리하는 작업보다 더 간편하게 작업이 가능하며, 코드량이 적어 생산성을 높여줌.

0개의 댓글