본문 바로가기

해킹-보안

오라클과 Mybatis 연동하기

반응형
Package Explorer 열기
Window > Show View > Other > Java Browsing - Packages > Open

메이븐 코드 추가
프로젝트 관리 및 빌드 파일인 pom.xml 파일에 다음 내용을 추가한다.

2-1 Oracle JDBC Driver Repository
pom.xml 파일 </properties> 아래에 레포지토리 코드를 추가한다.

1
2
3
4
5
6
7
<!-- 오라클 -->
<repositories>
    <repository>
        <id>oracle</id>
        <url>http://maven.jahia.org/maven2</url>
    </repository>
</repositories>
cs


2-2 dependency 추가
pom.xml의 </dependencies> 바로 위에 spring-jdbc, junit, spring-test, log4jdbc, mybatis, 
mybatis-spring을 추가한다.

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
<!-- spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
     
        <!-- Test -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency
     
        <!-- spring-test -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${org.springframework-version}</version>
            <scope>test</scope>
        </dependency>
     
        <!-- log4jdbc-log4j2-jdbc4 -->
        <dependency>
            <groupId>org.bgee.log4jdbc-log4j2</groupId>
            <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
            <version>1.16</version>
        </dependency>
  
      <!-- org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
      
        <!-- mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
cs


2-3 로깅 설정 추가
src/main/resources 우클릭 > new > Other > General - File > Next > Filename=log4jdbc.log4j2.properties > Finish
log4jdbc.log4j2.properties 파일을 연 후 아래 코드를 추가한다.
1
2
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
cs

두 번째 줄은 쿼리를 정렬하는 용도이므로 선택 사항이고 
log4j.xml 파일에서 sql 쿼리 로깅을 설정할 수 있다.  



ojdbc 추가
src/main/webapp/WEB-INF에 Folder를 하나 만들고 이름을 lib로 지정한다.
lib 폴더에 ojdbc jar 파일을 삽입하고 jar 파일을 우클릭해서 Build Path > Add to Build Path를 적용한다.
그리고 Referenced Libraries에 ojdbc가 추가됐는지 확인한다.


마이바티스 연동
src/main/webapp/WEB-INF/spring/root-context.xml 파일 아래에 Namespaces 클릭한후
beans, context, jdbc, mybatis-spring 항목을 체크한다.
namespace 탭이 없다면 source 탭으로 이동해서 beans 태그의 xmlns 옵션에 아래와 같이 작성한다.

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
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/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

그리고 그 다음 줄에 오라클 ID/PW와 마이바티스 연동 코드를 입력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 오라클 접속 -->
    <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
        <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
        <property name="url" value="jdbc:log4jdbc:oracle:thin:@localhost:1521/orcl"/>
        <property name="username" value="system"/>
        <property name="password" value="1234"/>
    </bean>
   
    <!-- Mybatis 연동 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
         <property name="dataSource" ref="dataSource"></property>
         <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
         <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"/>
    </bean>
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
    </bean>
cs



JUnit 동작 테스트
src/main/resources > other > mappers 폴더 생성 후 boardMapper.xml 파일을 생성한다.

boardMapper.xml
1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="boardMapper">
   
</mapper>
cs

src/main/resources에 mybatis-config.xml 파일을 생성하고 아래 코드를 추가한다.

mybatis-config.xml
1
2
3
4
5
6
7
<?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

src/test/java -> com.pkg.controller에 Test.java파일을 만들고 아래 코드를 추가한다.

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
package com.pkg.study;
 
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.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/**/root-context.xml"})
public class Test {
 
    @Inject
    private DataSource ds;
       
    @Inject
    private SqlSessionFactory sqlFactory;
 
    @org.junit.Test
    public void test() throws Exception{
 
        try(Connection conn = ds.getConnection()){
            System.out.println(conn);
        } catch(Exception e){
            e.printStackTrace();
        }
    }
   
  
    @org.junit.Test
    public void factoryTest() {
        System.out.println(sqlFactory);
      
    }
  
    @org.junit.Test
    public void sessionTest() throws Exception{
      
        try(SqlSession session = sqlFactory.openSession()) {
            System.out.println(session);
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}
cs


public class Test{ 안에 마우스 우클릭후 Run As > JUnit Test를 클릭한다.
Junit이 에러 없이 실행되면 성공이다.  만약 junit이 임포트되지 않는다면 메이븐에 설정된 자바 버전과 메이븐 플러그인 

버전을 올리고 동일하게 맞춰준다.  아래 빨간색으로 하이라이팅된 부분의 버전을 수정하면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
<properties>
    <java-version>1.8</java-version>
    <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
    <org.aspectj-version>1.6.10</org.aspectj-version>
    <org.slf4j-version>1.6.6</org.slf4j-version>
....
....    
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
        <source>1.8</source>
        <target>1.8</target>
cs


프로젝트 우클릭 > Maven > Update Project > Force Update of~ 체크 > Ok



자료 출처 : https://melonpeach.tistory.com/9








반응형

'해킹-보안' 카테고리의 다른 글

Spring RSA 암호화 적용하기  (0) 2021.01.30
Mybatis $와 # 차이  (0) 2021.01.13
DirBuster를 활용한 웹 서버 파일 및 디렉터리 스캔  (0) 2021.01.11
WI-FI deauth 공격  (2) 2020.12.22
SOP와 CORS 개념  (2) 2020.12.21