SqlSessionFactory

yedi·2025년 1월 8일

WAS 기반으로 XML을 연결하는 과정에서 필요한 SqlSessionFactory에 대해 알아보도록 합시다.


SqlSessionFactory 개념

  • SqlSessionFactory는 MyBatis에서 SQL 작업을 수행하기 위해 SqlSession 객체를 생성하는 핵심 팩토리 클래스입니다.
  • mybatis-config.xml 설정 파일과 데이터베이스 연결 정보, 매퍼 파일(SQL 매핑)을 기반으로 SQL 실행 환경을 제공합니다.
  • SqlSessionFactory는 데이터베이스 연결, 매퍼 관리, 트랜잭션 설정 등을 처리하는 역할을 합니다.


mybatis-config.xml 위치

  • Spring 프로젝트
    : 보통 src/main/resources 디렉토리에 위치하며, 경로는 classpath:/mybatis-config.xml로 지정합니다.
  • Spring Boot 프로젝트
    : MyBatis Starter를 사용하면 application.yml로 대체할 수 있지만, 추가 설정이 필요하면 mybatis-config.xml 파일을 동일한 위치에 배치합니다.


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">
  • 역할
    : Spring 애플리케이션 컨텍스트에서 사용할 Bean을 정의하는 최상위 요소입니다.
  • 속성
    xmlns : Spring Bean 정의를 위한 네임스페이스를 선언합니다.
    xmlns:context : Spring의 컨텍스트 네임스페이스를 선언하여 추가 기능(예: 컴포넌트 스캔)을 활성화합니다.
    xmlns:xsi : XML 스키마 인스턴스를 선언합니다.
    xsi:schemaLocation : Spring 네임스페이스와 해당 스키마 파일 경로를 연결합니다.

<bean> 태그

  • 역할
    : 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>
  • 역할
    : 데이터베이스 연결을 관리하는 DataSource 객체를 정의합니다.
  • 클래스
    : org.apache.commons.dbcp2.BasicDataSource (DB 연결 풀 라이브러리)
  • 속성
    driverClassName : 사용할 JDBC 드라이버 클래스. 여기서는 MySQL 드라이버(com.mysql.cj.jdbc.Driver)를 사용합니다.
    url : 데이터베이스 연결 URL. 예 : jdbc:mysql://localhost:3306/mydb
    username : 데이터베이스 사용자명
    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>
  • 역할
    : MyBatis의 SqlSessionFactory 객체를 생성하여 Spring에서 사용할 수 있도록 등록합니다.
  • 클래스
    : org.mybatis.spring.SqlSessionFactoryBean (MyBatis와 Spring 통합 클래스)
  • 속성
    dataSource : 위에서 정의한 dataSource를 참조하여 DB 연결을 제공합니다.
    mapperLocations : MyBatis 매퍼 XML 파일의 경로를 지정합니다. 예 : classpath:sqlmap/mappers/**/*.xml

0개의 댓글