d# DAO 디자인 패턴
비즈니스 Layer(서비스)와 Low 레벨의 데이터 엑세스 작업을 분리
DAO Layer는 DB와 비즈니스 Layer 가운데 위치하여 CRUD 작업을 수행한다
# 데이터 액세스 기술
1) JDBC: 자바에서의 관계형 DB 접속 기술, JDK 레벨에서 지원하며 다른 고수준 기술의 기반
2) Spring JDBC: Spring 자체적으로 지원하는 JDBC Wrapper
3) Mybatis: 3rd party 자바 관계형 DB 매핑 Library, 자바 오브젝트와 SQL문을 자동으로 맵핑(SQL Mapper)
4) JPA: Java ORM 표준 인터페이스(자료형을 맵핑 시켜주는 기술), 과거에는 자료형과 컬럼을 수동으로 맵핑
5) HIbernate: Java ORM 구현체
# Spring-JDBC
- 스프링 프레임워크에 포함된 스프링 공식 DB 연동 Library
- 유연한 Transaction 처리를 위해 Connection 단의 높은 추상화를 제공함
- Connection-pool을 지원하고, Result Mapper의 추상화를 사용해 쿼리를 편리하게 수행할 수 있음
- Mybatis, Hibernate 등이 Spring-JDBC를 사용함
# Mybatis
- XML을 별도 파일로 분리하고 자바 객체와 SQL 매핑을 지원하는 프레임워크
- 별도의 라이브러리로 존재하고 스프링과 연동모듈을 지원한다(Mybatis-spring 라이브러리 필요, 스칼라 Mybatis, .NET MyBatis 등이 있음)
# DataSource
- Connecton 확보 - DB에 연결
- 데이터소스는 Connection을 가져오기 위한 기술
- 스프링은 DataSource를 통해 Connection을 제공
설정방법
1) DriverManager를 사용하는 방법
- DriverManagerDataSource 클래스 사용
- Connection Pool이나 JNDI를 사용할 수 없는 경우 사용
2) Connection Pool을 사용하는 방법
- DB 커넥션을 미리 여러 개 확보해두고 클라이언트의 요청에 다라 제공하고 반납받는 시스템
- 매번 물리적으로 커넥션을 생성하지 않아 성능이 좋음(일반적으로 많이 사용함)
# 프로퍼티(Property) 파일을 이용한 MySQL 설정 예
- 프로퍼티 파일로 분리한 정보는 ${}(프로퍼티 치환자)를 이용하여 설정함
- ${} 값을 지원해주는 기능은 <context:property-plcaeholder> 태그에 의해 자동으로 등록되는 PropertyPlaceHolderConfigurerBean이 담당함
# 실습 MySQL 연동
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.18.RELEASE</version>
</dependency>
servlet-context.xml 추가- hello-web/src/main/webapp/WEB-INF/spring/appServlet
<context:property-placeholder location="classpath:config/database.properties"/>
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<beans:property name="driverClass" value="com.sql.jdbc.Driver" />
<beans:property name="url" value="jdbc:mysql://localhost:3306/spring" />
<beans:property name="username" value="spring" />
<beans:property name="password" value="spring" />
</beans:bean>
database.properties 파일 생성 - hello-web/src/main/resources/config
설정파일은 따로 구성해두는 것이 중요
db.driverClass=com.sql.jdbc.Driver
db.url=jdbc::mysql//localhost:3306/spring
db.username=spring
db.password=spring
servlet-context.xml 수정- hello-web/src/main/webapp/WEB-INF/spring/appServlet
<context:property-placeholder location="classpath:config/database.properties"/>
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<beans:property name="driverClass" value="${db.driverClass}" />
<beans:property name="url" value="${db.url}" />
<beans:property name="username" value="${db.username}" />
<beans:property name="password" value="${db.password}" />
</beans:bean>
'Archived(Programming) > Spring #2(기초)' 카테고리의 다른 글
Spring Mybatis (0) | 2020.03.15 |
---|---|
Context 분리와 전략 (0) | 2020.03.13 |
JUnit4 & Spring Test (0) | 2020.03.13 |
Static file 처리와 FileUpload (0) | 2020.03.12 |
Restful API (0) | 2020.03.12 |