WAS 기반으로 XML을 연결하는 과정에서 필요한 SqlSessionFactory에 대해 알아보도록 합시다.
mybatis-config.xml 설정 파일과 데이터베이스 연결 정보, 매퍼 파일(SQL 매핑)을 기반으로 SQL 실행 환경을 제공합니다.src/main/resources 디렉토리에 위치하며, 경로는 classpath:/mybatis-config.xml로 지정합니다.application.yml로 대체할 수 있지만, 추가 설정이 필요하면 mybatis-config.xml 파일을 동일한 위치에 배치합니다.Spring Framework와 MyBatis를 연동하여 데이터베이스와 상호작용하는 설정은 XML과 Java Config 두 가지 방식으로 가능합니다.
XML은 설정 파일과 코드를 분리하여 가독성과 유지보수성이 뛰어나며, Java Config는 타입 안전성과 유연성이 우수합니다.
아래는 XML 설정의 전체 구조입니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- DataSource 빈 설정 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydb" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean>
<!-- SqlSessionFactory 설정 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:sqlmap/mappers/**/*.xml" />
</bean>
</beans>
① <beans> 루트 태그
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
xmlns : Spring Bean 정의를 위한 네임스페이스를 선언합니다.xmlns:context : Spring의 컨텍스트 네임스페이스를 선언하여 추가 기능(예: 컴포넌트 스캔)을 활성화합니다.xmlns:xsi : XML 스키마 인스턴스를 선언합니다.xsi:schemaLocation : Spring 네임스페이스와 해당 스키마 파일 경로를 연결합니다.② <bean> 태그
id : Bean의 이름을 지정합니다.class : Bean의 구현 클래스 경로를 지정합니다.③ <bean id="dataSource">
<!-- DataSource 빈 설정 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydb" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean>
org.apache.commons.dbcp2.BasicDataSource (DB 연결 풀 라이브러리)driverClassName : 사용할 JDBC 드라이버 클래스. 여기서는 MySQL 드라이버(com.mysql.cj.jdbc.Driver)를 사용합니다.url : 데이터베이스 연결 URL. 예 : jdbc:mysql://localhost:3306/mydbusername : 데이터베이스 사용자명password : 데이터베이스 비밀번호④ <bean id="sqlSessionFactory">
<!-- SqlSessionFactory 설정 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:sqlmap/mappers/**/*.xml" />
</bean>
SqlSessionFactory 객체를 생성하여 Spring에서 사용할 수 있도록 등록합니다.org.mybatis.spring.SqlSessionFactoryBean (MyBatis와 Spring 통합 클래스)dataSource : 위에서 정의한 dataSource를 참조하여 DB 연결을 제공합니다.mapperLocations : MyBatis 매퍼 XML 파일의 경로를 지정합니다. 예 : classpath:sqlmap/mappers/**/*.xml