본문 바로가기
Study/Spring

Spring에서 myBatis Oracle 연동

by 오늘만 사는 여자 2020. 10. 6.
728x90
반응형

 

1. 데이터베이스에 테이블 등 설정을 우선 한다.

 

2. pom.xml에 파일에 필요한 의존성을 추가한다. 추가 후 프로젝트에 마우스 오른쪽 키를 클릭하여 Maven -> Update Project 를  실행한다.

 

<!-- 오라클 JDBC 드라이버를 가져오기 위해 리포지토리를 추가합니다. -->
<!-- properties 밑에 -->
<repositories>
  <repository>
   <id>oracle</id>
   <url>http://maven.jahia.org/maven2</url>
  </repository>
</repositories>


<!-- 스프링에서 JDBC 를 사용하기 위한 라이브러리 입니다. -->
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-jdbc</artifactId>
   <version>${org.springframework-version}</version>
</dependency>


<!-- 컨넥션 풀을 위한 라이브러리 -->
<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
</dependency>


<!-- 오라클 JDBC 드라이버 -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>12.1.0.2</version>
</dependency>


<!-- MyBatis 라이브러리 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.1</version>
</dependency>

<!-- 마이바티스와 스프링 연동을 위한 라이브러리 -->

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.0</version>
</dependency>

필요한 라이브러리가 있을 경우 http://search.maven.org 등에 들어가서 검색을 해서 찾아서 넣으면 됩니다.

3. root-context.xml파일에 데이터베이스 연결 설정, MyBatis 설정, Transaction을 추가한다. 스프링 루트 컨텍스트

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
	<!-- 데이터베이스 연결 --> 
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> 
		<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" /> 
		<property name="username" value="system"/> 
		<property name="password" value="oracle"/> 
	</bean> 
	<mybatis-spring:scan base-package="com.dayoon.hello.*.mapper"/> 
	<!-- SqlSession --> 
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
		<property name="dataSource" ref="dataSource" /> 
		<property name="configLocation" value="classpath:sql/mybatis-config.xml" /> 
		<property name="mapperLocations" value="classpath:sql/sqlmap/*.xml" /> 
	</bean> 
	<!-- SqlSession --> 
	<!-- 요건 dao용꺼 
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache"> 
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" /> 
	</bean>  -->
	<!-- 지정된 베이스 패키지에서 DAO(Mapper) 를 검색하여 등록합니다. -->
	<!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
		<property name="basePackage" value="com.dayoon.hello.*.mapper" /> 
	</bean>  -->
	<!-- 트랜잭션 매니저 bean 을 등록합니다. --> 
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
		<property name="dataSource" ref="dataSource" /> 
	</bean> 
	
	<!-- 아노테이션 기반의 트랜잭션을 사용합니다. --> 
	<tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

 

위에서 beans, tx, jdbc의 네임스페이스가 사용되었다. 파일 상단에 xmlns로 지정되는 부분이다. 

파일 내부에서 사용되는 태그의 네임스페이스가 지정되어야 한다. eclipse의 에디터로 설정파일을 열면 하단의 네임스페이스 탭에서 필요한 네임스페이스를 선택하여 쉽게 추가할 수 있다. 

 

4. servlet-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"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.dayoon.hello" />
	
	
	
</beans:beans>

 

 

위에서 두개의 컨텍스트를 설정하였다. 

root-context.xml 과 servlet-context.xml 파일에서 보면 각각 <bean/> 태그와 <beans:beans/> 태그가 사용되고 있다는 것을 알 수 있습니다. 둘의 기능적 차이는 없습니다. 완전히 같은 것 입니다. 그런데 표기 방법이 달라지는 것은 디폴트 네임스페이스 때문입니다.

 

최상위 요소 <beans 바로 뒤에 나오는 xmlns= 로 바로 시작하는 네임스페이스가 디폴트 네임 스페이스 입니다. 디폴트 이외에는 xmlns:beans= 처럼 네임스페이스를 적어야 합니다. 디폴트 네임스페이스는 본문에 태그를 적을때 네임스페이스를 빼고 적어도 됩니다.


<beans xmlns="http://www.springframework.org/schema/beans"

          ....... />

   <!-- 기본 네임스페이스가 beans 이므로 바로 쓸 수 있습니다. -->

   <bean ....> </bean>

</beans>

 

<beans:beans xmlns="http://www.springframework.org/schema/mvc"

                ....  />

    <!-- 기본 네임스페이스가 mvc 이므로 bean 앞에 네임스페이스를 적어야 합니다. -->

    <beans:bean ...> </beans:bean>

</beans:beans>

 

5. mybatis-config.xml 마이바티스 설정파일을 작성한다.


<?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>
	<!-- 여러가지 기본 옵션을 지정합니다. --> 
    <settings> 
    	<!-- 오라클 필드 속성이 READ_COUNT 처럼 언더 스코어가 있을 때 VO 의 readCount 처럼 카멜 케이스로 변환 되게 합니다. -->
		<setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="jdbcTypeForNull" value="NULL" />
		<setting name="callSettersOnNulls" value="true" />
	</settings>
	
	<typeAliases>
		<typeAlias alias="Board" type="com.dayoon.hello.study.model.Board"/>
	</typeAliases>
</configuration>

그 후 데이터를 service에서 호출하여 가공 후 사용한다.

 



Reference: https://offbyone.tistory.com/18 [쉬고 싶은 개발자]

728x90
반응형

댓글