실전 개발자를 위한 Spring Framework Day13 (2회차)
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 표준 인터페이스
- ORM(Object Relation Mapping): 자바 오브젝트와 관계형 DB 테이블을 자동으로 매핑해주는 기술
Hibernate
- 자바 ORM 구현체
Spring-JDBC
- 스프링 프레임워크에 포함된 스프링 공식 데이터베이스 연동 라이브러리
- 유연한 Transaction 처리를 위해 Connection 단의 높은 추상화를 제공
- Connection-Pool을 지원하고, Result Mapper의 추상화를 사용해 쿼리를 편리하게 수행할 수 있음
- MyBatis, Hibernate 등이 Spring-JDBC를 사용함
MyBatis
- XML을 별도 파일로 분리(mapper.xml)하고 자바 객체와 SQL 매핑을 지원하는 프레임워크
- java 파일에서 관리하기 힘들었던 쿼리문을 xml 파일로 따로 관리해서 편리해졌음
- 별도의 라이브러리로 존재하고 스프링과 연동 모듈을 지원한다
- 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용 프로퍼티로 분리하여 저장