ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring]OracleDB 연동하기
    Programming/Spring 2015. 10. 22. 00:28

    Oracle과 Spring 연동 방법


    가장먼저 ojdbc6.jar파일을 받아준다.


    해당파일은 oracle홈페이지에서 다운로드 가능하다.


    다운받은 파일은 라이브러리에 넣어주면 된다.


    다음 pom.xml에 maven을 넣어준다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.8</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.bgee.log4jdbc-log4j2</groupId>
        <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
        <version>1.16</version>
    </dependency>
    <dependency>
        <groupId>org.spring.framework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.spring.framework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    cs


    그런다음 첨부파일에 있는 파일들을 받아서 /src/main/resource에 넣는다.

    log4jdbc.log4j2.properties


    logback.xml


    maven에서 junit의 버전을 4.12로 변경한다.


    그리고 나서 root-context.xml의 namespace로 이동해 다음을 추가해준다.

    aop, beans, context, jdbc, mybatis-spring


    그후 다음내용을 작성한다. 소스안에 보이는 테스트진행은 꼭 진행하고 넘어가도록 한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
        <property name="url" value="jdbc:log4jdbc:oracle:thin:localhost:1521:xe"/><!-- 오라클 엔터프라이즈급인 경우 xe대신 DB명을 넣는다 -->
        <property name="username" value="test"/>
        <property name="password" value="1234"/>
    </bean>
     <!-- 지금 주석친 이 부분까지 작성하고 1단계 테스트를 진행한다.-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation"
                value="classpath:/mybatis-config.xml"></property<!-- configLocation라는 속성 추가 mybatis 설정xml인식 -->
    <!-- 지금 주석친 이 부분까지 작성하고 2단계 테스트를 진행한다. -->
        <property name="mapperLocations" 
                value="classpath:/mappers/**/*Mapper.xml"></property><!-- mapperLocations라는 속성 추가, 작성된 mappers폴더안에 어떤 폴더이건 관계없이 파일이름이'Mapper.xml'로 끝나면 자동으로 인식, 2단계 테스트를 끝내고 추가한다. -->
    </bean>
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/<!-- DB와 연결을 맺고 끊어주는걸 알아서 처리해주는 template -->
    </bean>
    cs


    2단계 테스트 전에 다음 xml파일을 src/main/resource에 넣어준다. 파일이름은 mybatis-config.xml이다


    1
    2
    3
    4
    5
    6
    7
    8
    <?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>
      
      </configuration>
     
    cs


    이후 2단계 테스트를 실행한다.


    그 다음 web.xml을 수정해준다 (근데 이건 안해줘도 상관없을듯?)


    1
    2
    3
    4
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    cs

    다음은 JUnit을 이용한 테스트코드이다. JUnit에 파란불이 들어오면 성공이다.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    package org.galket.app;
     
    import java.sql.Connection;
     
    import javax.inject.Inject;
    import javax.sql.DataSource;
     
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
     
            
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations ={"file:src/main/webapp/WEB-INF/spring/**/*.xml"})    
    public class TestDB{//Class의 이름을 Test로 지정하면 안된다.
     
        @Inject
        private DataSource ds;
        
        @Test
        public void testConection()throws Exception{//DataSource의 접속여부를 확인하는 테스트(1단계)
            
            try(Connection con = ds.getConnection()){
                
                System.out.println(con);
            }catch(Exception e){
                e.printStackTrace();
            }
            
        }
        
        @Inject
        private SqlSessionFactory sqlFactory;
        
        @Test
        public void testFactory(){//sqlFactory 접속여부 확인테스트(2단계)
            System.out.println(sqlFactory);
        }
        
        @Test
        public void testSession()throws Exception{
            
            try(SqlSession session = sqlFactory.openSession()){
                System.out.println(session);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        
    }
     
    cs


    성공하면 DB와 연결된 것임


Designed by Tistory.