새소식

Database

데이터 접근 기술 (1) - 데이터 접근 기술의 종류

 

 

개요

 

이번 글은 데이터 접근 기술 시리즈의 첫 번째로, 데이터와 데이터 접근 기술의 종류에 대한 글이다.

이후 이어지는 포스트들은 각 기술을 사용하는 방법에 대해 기술할 것이다.

김영한 님의 스프링 DB 강의와 개인 공부를 통해 학습한 내용을 정리하고자 한다.

 

 

 

 

 

데이터와 데이터베이스

 

데이터는 어떠한 필요에 의해 수집했지만 특정 목적을 위해 평가하거나 정제하지 않은 값이나 사실 또는 자료 자체를 의미한다. 그리고 수집한 데이터를 어떠한 목적을 위해 분석하거나 가공하여 가치를 추가하거나, 새로운 의미를 이끌어 낼 수 있는 결과로 정보가 생성된다. 즉, 잘 수집된 데이터를 분석하고 가공하면 새로운 가치를 만들어 낼 수 있는 정보를 얻을 수 있는 것이다.

 

만일 데이터가 누락 또는 중복된다면 정확한 분석을 기대할 수 없고, 시간과 비용을 낭비하게 된다. 효율적인 데이터 관리가 가능하며 특정 목적을 위해 여러 사람이 공유하여 사용할 수 있고, 효율적 관리와 검색을 위해 구조화한 데이터의 집합을 데이터베이스라 한다.

(<오라클로 배우는 데이터베이스 입문> 발췌)

 

 

 

 

 

JDBC

 

JDBC(Java Database Connectivity)는 자바 언어를 사용하여 데이터베이스와 상호작용하기 위한 자바 API이다. JDBC를 사용하면 자바 애플리케이션에서 데이터베이스에 접근하여 데이터를 등록하거나 변경할 수 있다.

 

JDBC로 데이터에 접근하려면 드라이버를 통해 데이터베이스에 연결하고 sql 쿼리를 실행하여 필요한 결과를 얻는 과정이 필요하다.

아래 코드는 JDBC를 이용해 DB에 데이터를 저장하고 수정하는 메서드다.

 

public Member save(Member member) throws SQLException {
    String sql = "insert into member(member_id, money) values(?, ?)";

    Connection con = null;
    PreparedStatement pstmt = null;

    try {
        con = getConnection();
        pstmt = con.prepareStatement(sql);
        pstmt.setString(1, member.getMemberId());
        pstmt.setInt(2, member.getMoney());
        pstmt.executeUpdate();
        return member;
    } catch (SQLException e) {
        log.error("db error [{}]", e);
        throw e;
    } finally {
        close(con, pstmt, null);
    }
}

public void update(String memberId, int money) throws SQLException {
	String sql = "update member set money = ? where member_id = ?";

    Connection con = null;
    PreparedStatement pstmt = null;

    try {
        con = getConnection();
        pstmt = con.prepareStatement(sql);
        pstmt.setInt(1, money);
        pstmt.setString(2, memberId);
        int result = pstmt.executeUpdate();
        log.info("resultSize={}", result);
    } catch (SQLException e) {
        log.error("db error [{}]", e);
        throw e;
    } finally {
        close(con, pstmt, null);
    }
}

 

 

이처럼 매번 복잡하고 비슷한 코드를 반복해서 작성해야 하고, 트랜잭션 처리도 번거롭다. 만약 사용하고 있는 DB를 변경해야 한다면 그 일도 쉽지 않다. 이러한 여러 가지 단점들을 극복하기 위해 새로운 기술들이 등장하게 되었다.

 

 

 

데이터 접근 기술의 종류

 

데이터에 접근하고 다루는 기술은 다음 5개로 볼 수 있다.

  • JdbcTemplate
  • MyBatis
  • JPA, Hibernate
  • Spring Data JPA
  • Querydsl

 

 

이 기술들은 다시 2가지로 분류할 수 있다.

 

SQLMapper

  • JdbcTemplate
  • MyBatis

 

ORM 관련

  • JPA, Hibernate
  • Spring Data JPA
  • Querydsl

 

 

SQLMapper는 sql을 직접 작성하고 매핑하는 방식으로 동작하며, JDBC를 직접 사용할 때 발생하는 중복을 제거할 수 있다.

비교적 사용 방법이 간단하고 여러 가지 편리한 기능을 제공한다.

 

  • JdbcTemplate: 스프링에서 제공하는 JDBC 기반의 DB 접근을 단순화하는 클래스
  • MyBatis: sql 기반의 DB 접근을 위한 오픈 소스 프레임워크로 DB와 자바 객체 간 매핑을 xml 파일로 정의함

 

 

ORM(Object-Relational Mappping)은 객체와 관계형 데이터베이스 간의 매핑을 자동으로 처리하는 기술이다.

sql 쿼리를 직접 작성하지 않고, 객체 지향적인 코드로 데이터베이스 조작이 가능하다.

 

  • JPA: 자바에서 관계형 데이터베이스를 다루기 위한 표준 인터페이스
  • Hibernate: JPA의 구현체 중 하나
  • Spring Data JPA: 스프링에서 JPA를 편리하게 사용할 수 있도록 도와주는 프로젝트
  • Querydsl: 쿼리 생성에 도움을 주는 라이브러리로 Spring Data JPA와 함께 사용되어 더 편리한 쿼리 작성이 가능

 

 

이처럼 각각의 기술에 특징이 있으니 프로젝트의 요구사항에 가장 적합한 방법을 선택하여 사용하도록 한다.

 

 

 

 

참고

  • 스프링 DB 2편 - 데이터 접근 활용 기술 (김영한)
  • 오라클로 배우는 데이터베이스 입문 (이지훈)

 

 

 

Contents

Copied URL!

Liked this Posting!