Spring-Data Access 기술과 DataSource

1. DAO 디자인 패턴

  • DAO 디자인 패턴은 비즈니스 서비스와 로우레벨의 데이터 엑세스 작업을 분리한다

DAO 레이어

  • 데이터베이스와 비즈니스 레이어 가운데 위치
  • CRUD 작업 수행

JDBC

  • 자바에서 관계형 데이터 베이스 접속 기술
  • JDK 레벨에서 지원하며, 다른 고수준 기술의 기반이 됨

Spring JDBC

  • 스프링 자체적으로 지원하는 JDBC Wrapper

MyBatis

  • Third-party 자바-관계형 DB 매핑 라이브러리
  • 자바 오브젝트와 SQL문을 자동으로 매핑(SQL Mapper)

JPA

  • Java ORM 표준 인터페이스

Hibernate

  • 자바 ORM 구현체

Spring-JDBC

  • 스프링 프레임워크에 포함된 스프링 공식 데이터베이스 연동 라이브러리
  • 유연한 Transaction 처리를 위해 Connection 단의 높은 추상화를 제공
  • Connection-Pool을 지원하고, Result Mapper의 추상화를 사용해 쿼리를 편리하게 수행할 수 있음
  • MyBatis, Hibernate 등이 Spring-JDBC를 사용함

MyBatis

  • XML을 별도 파일로 분리하고 자바 객체와 SQL 매핑을 지원하는 프레임워크
  • 별도의 라이브러리로 존재하고 스프링과 연동 모듈을 지원한다
    • mybatis-spring 라이브러리 필요
    • 스칼라 MyBatis, .NET Mybitis 등이 있음

DataSource

  • Connection 확보 - DB에 연결
  • 데이터소스는 Connection을 가져오기 위한 기술
  • 스프링은 DataSource를 통해 Connection을 제공

DataSource 설정 방법

  • DriverManager를 사용
    • DriverManagerDataSource 클래스를 사용
    • Connection Pool이나 JNDI를 사용할 수 없는 경우 사용
  • Connection Pool을 사용하는 방법
    • 데이터베이스 커넥션을 미리 여러 개 확보하고 클라이언트의 요청에 따라 제공하고 반납받는 시스템
    • 매번 물리적으로 커넥션을 생성하지 않아 성능이 향상됨

2. 프로퍼티

  • servlet-context.xml 파일에서 «context:property-placeholder location=”프로퍼티 파일 경로” />를 통해 설정

  • 프로퍼티 파일에 key=value 형식으로 프로퍼티 작성

  • 프로퍼티 치환자(${})를 통해 설장한 프로퍼티 사용

  • 환경에 따라 자주 변경될 수 있는 내용은 properties 파일로 관리하면 편리하다

    ex) DB를 Oracle용 프로퍼티와 Mysql용 프로퍼티로 분리하여 저장