이번 절에서는 mybatis 설정에 대해 자세히 알아본다. 이전 절에서 작성한 mybatis-config.xml 파일을 참고하여 설명한다. mybatis 프레임워크는 자체 커넥션풀을 구축할 수 있다. 또한, 여러 개의 데이터베이스 연결 정보를 설정해 두고 실행 상황(개발, 테스트, 운영 등)에 따라 사용할 DB를 지정할 수 있다. 실행 성능을 높이기 위해 SELECT 결과를 캐싱해 두기도 하고, SQL 맵퍼 파일에서 사용할 값 객체(Value Object)에 대해 별명을 부여할 수 있다.
다음은 이런 mybatis 프레임워크의 동작 환경을 설정하는 파일이다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="spms/dao/db.properties"/>
<typeAliases>
<typeAlias type="spms.vo.Project" alias="project"/>
<typeAlias type="spms.vo.Member" alias="member"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="spms/dao/MySqlProjectDao.xml"/>
</mappers>
</configuration>
# XML 선언과 mybatis 설정을 위한 DTD 선언
mybatis 설정 파일은 XML 기술을 사용하여 작성하기 때문에 제일 먼저 XML 선언과 태그 규칙을 정의한 DTD 선언이 온다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
# <configuration> 루트 엘리먼트
mybatis 설정 파일의 루트 엘리먼트는 configuration 이다. 이 태그의 DTD 규칙은 다음과 같다.
- mybatis-3-config.dtd의 일부분
<!ELEMENT configuration (properties?, settiongs?, typeAliases?,
typeHandlers?, objectFactory?, objectWrapperFactory?, plugins?,
environments?, databaseIdProvider?, mappers?)>
다음은 configuration의 자식 엘리먼트들 중에서 주요 엘리먼트들의 용도를 정리한 표이다.
엘리먼트 | 용도 |
properties | 프로퍼티 파일이 있는 경로 설정. <property> 태그를 사용하여 개별 프로퍼티 정의 가능 |
settings | 프레임워크의 실행 환경을 설정 |
typeAliases | 자바 클래스 이름(패키지 이름 포함)에 대한 별명 설정 |
typeHandlers | 컬럼의 값을 자바 객체로, 자바 객체를 컬럼의 값으로 변환해 주는 클래스를 설정 |
environments | 프레임워크에서 사용할 데이터베이스 정보(트랜잭션 관리자, 데이터 소스)를 설정. |
mappers | SQL 맵퍼 파일들이 있는 경로 설정 |
# <properties> 엘리먼트
데이터베이스 연결 정보처럼 자주 변경될 수 있는 값은 mybatis 설정 파일에 두지 않고 보통 프로퍼티 파일에 저장한다. 우리의 예제에서도 데이터베이스 정보는 별도의 프로퍼티 파일에 저장하였다. 프로퍼티 파일을 로딩하려면 <properties> 태그를 사용한다.
<properties resource="spms/dao/db.properties"/>
프로퍼티 파일이 클래스 경로(CLASSPATH)에 있다면 resource 속성을 사용하여 설정한다. 만약 클래스 경로가 아닌 다른 경로에 있다면 url 속성을 사용한다. 다음은 c:/conf/db.properties 경로의 프로퍼티 파일을 설정하는 예이다.
<properties url="file:///c:/conf/db.properties"/>
- 프로퍼티 파일 작성 예
다음은 이전 절에서 작성한 db.properties 파일의 내용이다.
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/studydb
username=study
password=study
- 개별 프로퍼티 설정
프로퍼티 파일에 정의된 것 외에 추가로 프로퍼티를 정의할 수 있다. 다음과 같이 <property> 태그를 사용하여 프로퍼티 이름과 값을 정의한다.
<properties resource="spms/dao/db.properties">
<property name="username" value="test"/>
<property name="password" value="testok"/>
<properties>
- 프로퍼티 값 참조
프로퍼티 파일에 저장된 값은 ${프로퍼티명} 형식으로 참조한다. 다음은 db.properties에 정의된 값을 참조하는 예이다.
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
참고도서 : https://freelec.co.kr/book/1674/
[열혈강의] 자바 웹 개발 워크북
[열혈강의] 자바 웹 개발 워크북
freelec.co.kr
'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글
111. mybatis 설정 파일 (3) (0) | 2022.09.09 |
---|---|
110. mybatis 설정 파일 (2) (0) | 2022.09.07 |
108. SQL 맵퍼 파일 (2) (0) | 2022.09.03 |
107. SQL 맵퍼 파일 (1) (0) | 2022.09.01 |
106. mybatis 적용 (4) (0) | 2022.08.31 |
댓글