개발 무지렁이

[Spring] myBatis-spring와 주요설정(JNDI: DataSource) 본문

Backend/스프링

[Spring] myBatis-spring와 주요설정(JNDI: DataSource)

Gaejirang-e 2023. 5. 8. 21:58

myBatis-spring


spring에서 ORM을 더 쉽게 사용할 수 있도록 만들어서 제공하는 lib

📌.myBatis-spring 주요 컴포넌트

  - SqlSessionFactoryBean
  : (myBatis) SqlSessionFactory를 SqlSessionTemplate의 생성자에 전달한다.
  ⚠️. Spring Bean으로 등록해야한다.

  - SqlSessionTemplate
  : (myBatis) SqlSession을 미리 만들어놓는다.
  ⚠️. Spring Bean으로 등록해야한다.
🪛. Spring Bean 설정파일(beans.xml or myBatis-context.xml)

(0) Bean으로 등록할 때, DataSource 정보와 myBatis Config 파일정보, Mapping 파일 정보 설정
(1) SqlSessionTemplateBean으로 등록

⚠️. JNDI(Java Naming Directory Interface): 이 API를 호출하여 시스템 연결을 제공하는 프로그램 객체를 찾는다.(자바 Naming을 기반으로, DBCP연결/관리하는 API, DataSource의 약자.)
⚠️. (javax.sql.)DataSource(connection pool을 관리하는 목적으로 사용하는 객체)

[myBatis-context.xml]

  <?xml version="1.0" encoding="UTF-8"?>
  <beans:beans xmlns="http://www.springframework.org/schema/mvc"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:beans="http://www.springframework.org/schema/beans"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:p="http://www.springframework.org/schema/p"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

    <context:component-scan base-package="web.mvc.service,web.mvc.repository"/>

    <context:property-placeholder location="/WEB-INF/spring/appServlet/*.properties"/>
    <!-- DBCP를 사용하기 위한 javax.sql.DataSource의 실제 구현체(BasicDataSource) 등록 --> 
    <beans:bean    id="dataSource" 
                class="org.apache.commons.dbcp.BasicDataSource"
                p:driverClassName="${jdbc.oracle.driver}"
                p:url="${jdbc.oracle.url}"
                p:username="${jdbc.oracle.username}"
                p:password="${jdbc.oracle.password}"  
                p:maxActive="10"/>

    <!-- myBatis의 주요 컴포넌트 sqlSessionFactory 생성 -->
    <beans:bean id="sqlSessionFactory" 
                 class="org.mybatis.spring.SqlSessionFactoryBean">
        <beans:property name="dataSource" ref="dataSource" /> <!-- 위에서 등록한 DataSource Bean 참조 -->
        <beans:property name="mapperLocations" value="classpath:mapper/*Mapper.xml" /> <!--  Mapper.xml 로끝나는 mapper모두 등록 -->
        <beans:property name="typeAliasesPackage" value="web.mvc.dto" /> <!-- dto폴더안에있는 클래스들 별칭 자동만듦 - 클래스명의 첫글만 소문자!! -->
    <!--  <beans:property name="configLocation" value="classpath:SqlMapConfig.xml"/> -->
    </beans:bean>

    <!-- myBatis의 주요 컴포넌트 sqlSessionTemplate 생성 -->  
    <beans:bean id="sqlSession"
               class="org.mybatis.spring.SqlSessionTemplate">
        <beans:constructor-arg index="0" ref="sqlSessionFactory"/>
    </beans:bean>
  </beans:beans>
Comments