04. DAO Pattern

Jimin Lim·2021년 10월 28일
0

Design Pattern

목록 보기
5/12
post-thumbnail

Data Access Object Pattern
업무와 데이터 2계층을 분리하고 서로 그 상태를 동일하게 유지한다.

Problem

  • 데이터를 저장하는 방식이 다양함 (DB, csv 파일 등)
  • 사용하는 방법이 다르면 변경 부분이 많아짐 (DBMS에 따라 SQL문이 다를 수도 있음)

Solution

  • 업무와 데이터를 분리시킨다.
    • 업무: 고객, 주문, 유통 같은 업무 절차 및 규칙
    • 데이터: 정보를 어떻게 저장할지 (ex: 고객 ID를 몇 자리로 할 것인지, 숫자 또는 문자인지 등)
  • 데이터를 저장하는 방식을 분리해서 변경 부분을 최소화 시킴

  • Dao: 모델에 대한 기본적인 CRUD
  • DaoImpl: Dao 인터페이스를 구현한 concreate class
  • Value Object: Dao를 사용해서 데이터를 저장하는 단순 POJO(Plain Old Java Object: 실제 데이터를 담고 있는 자바 클래스)

JDBC

: 데이터베이스 비종속적인 표준 자바 API

  • 다양한 데이터베이스를 동일한 인터페이스로 사용할 수 있도록 한다.
  • 각종 데이터베이스는 JDBC Driver를 통해서 연결하고 사용한다.

Connection 인터페이스
: 자바 응용 프로그램과 데이터베이스를 연결한 세션 유지 및 쿼리 실행

  • createStatement(): SQL 쿼리를 실행시킬 수 있는 Statement 인터페이스 객체 생성
  • close(): DB 연결 끊음

Statement 인터페이스

  • executeQuery(String sql): SELECT 쿼리 실행, ResultSet 객체 반환
  • executeUpdate(String sql): create, drop, insert, update, delete 등 실행

ResultSet 인터페이스

  • next(): 데이터가 실제 있는지 확인, 다음 행으로 이동
  • getInt(int columnIndex), getInt(String columnName): 주어진 칼럼의 데이터를 정수형태로 반환
  • getString(int columnIndex), getString(String columnName): 주어진 칼럼의 데이터를 String 형태로 반환

연결

  1. https://github.com/xerial/sqlite-jdbc/releases 최신 버전 jar 다운로드
  2. Project Structure -> Libraries -> + jar 추가

→ 이 과정에서
java.lang.NoClassDefFoundError: 라는 오류가 발생했다. 이 전에 jar를 추가하다가 이것저것 건드려서 발생한 오류 같다. 클래스파일을 찾는 데 기준이 되는 파일 경로를 제대로 설정해줘야 한다. 참고

profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

0개의 댓글