본문 바로가기
교재 실습/자바 웹 개발 워크북

109. mybatis 설정 파일 (1)

by Jint 2022. 9. 6.

이번 절에서는 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

댓글