ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 02-1. ORM : MyBatis 연동하기 (MyBatis, Connection Pool, ojdbc6) [Spring]
    Spring 2016. 11. 1. 16:55
    반응형



    설정하기


    Depandencies에서

    commons-dbcp 추가

    ojdbc6 추가 (.xml에서 직접 작성)


    porn.xml에서

    <!-- Connection Pool 지원하는 라이브러리 -->

    <dependency>

      <groupId>commons-dbcp</groupId>

      <artifactId>commons-dbcp</artifactId>

      <version>1.4</version>

      </dependency>

    </dependencies>


    <!-- Oracle Repoitory 등록 Ojdbc6.jar 를 가져오기 위해서 등록함. -->

    <repositories>

      <repository>

      <id>oracle</id>

      <name>ORACLE JDBC Repository</name>

      <url>http://maven.jahia.org/maven2</url>

      </repository>

    </repositories>


    <!-- Oracle DB에 접근하기 위한 Ojdbc6 라이브러리 -->

    <dependency>

      <groupId>com.oracle</groupId>

      <artifactId>ojdbc6</artifactId>

      <version>11.1.0.7.0</version>

    </dependency>



    rootContext.xml에서

    <!-- DriverManager.getConnection()을 대체할 객체 -->

    <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:@localhost:1521:XE" />

    <property name="username" value="HR" />

    <property name="password" value="HR" />

    </bean>


    web.xml에서

    (Ctrl + Space 눌러서 ContextLoaderListener 선택)

    <!-- needed for ContextLoaderListener -->

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

    /WEB-INF/spring/*Context.xml

    </param-value>

    </context-param>


    MyBatis Dependency 추가하기

    porn.xml -> Depandencies 에서 add버튼 클릭후 추가

    mybatis-spring

    mybatis

    spring-jdbc

    aspectjweaver


    rootContext.xml에서

    <bean        id="sqlSessionFactory"

    class="org.mybatis.spring.SqlSessionFactoryBean" >

    <property name="dataSource" ref="dataSource" />

    </bean>

    <!-- DaoSupport 역할 -->

    <bean        id="sqlSessionTemplate"

    class="org.mybatis.spring.SqlSessionTemplate">

    <!-- 생성자 -->

    <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>

    </bean>


    <bean에 적는 value=""는 Primitive 타입이다

    <bean에 적는 ref="" 레퍼런스 타입일때


    <bean의 id=변수명 class=타입

    <property>는 setter이다

    <constructor-arg>는 생성자 이다



    rootContext.xml 에서


    트랜잭션

    실패시 : RollBack

    성공시 : Commit


    <!--  Transaction 설정 -->

    <bean        id="transactionManager"

    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    <property name="dataSource" ref="dataSource"></property>

    </bean>

    <!-- Transaction 수행 Method 설정 -->

    <tx:advice id="txAdvice"

    transaction-manager="transactionManager">

    <tx:attributes>

    <!-- Insert -->

    <tx:method name="add*" rollback-for="RuntimeException"/>

    <tx:method name="new*" rollback-for="RuntimeException"/>

    <tx:method name="append*" rollback-for="RuntimeException"/>

    <tx:method name="insert*" rollback-for="RuntimeException"/>

    <tx:method name="regist*" rollback-for="RuntimeException"/>

    <tx:method name="put*" rollback-for="RuntimeException"/>

    <!-- Update -->

    <tx:method name="update*" rollback-for="RuntimeException"/>

    <tx:method name="modify*" rollback-for="RuntimeException"/>

    <tx:method name="replace*" rollback-for="RuntimeException"/>

    <tx:method name="replace*" rollback-for="RuntimeException"/>

    <tx:method name="fix*" rollback-for="RuntimeException"/>

    <tx:method name="plus*" rollback-for="RuntimeException"/>

    <tx:method name="minus*" rollback-for="RuntimeException"/>


    <!-- Delete -->

    <tx:method name="delete*" rollback-for="RuntimeException"/>

    <tx:method name="remove*" rollback-for="RuntimeException"/>

    <tx:method name="detach*" rollback-for="RuntimeException"/>

    <tx:method name="drop*" rollback-for="RuntimeException"/>

    <!-- Select -->

    <tx:method name="select*" read-only="true"/>

    <tx:method name="get*" read-only="true"/>

    <!--  공통 -->

    <tx:method name="tx*" rollback-for="RuntimeException"/>

    </tx:attributes>

    </tx:advice>


    rootContext -> Namespaces -> aop, tx 체크하기

    <!-- Transaction 이 적용될 업무 담당 경계 설정 -->

    <aop:config>

    <!-- 업무 경계 설정 -->

    <!-- expression : 업무 경계 설정 Format -->

    <aop:pointcut expression="execution( public * com.ktds..service.*Impl.*(..) )" id=""/>

    com.ktds 이하의 service안에 Impl에 있는 모든 (메소드)들

     <!-- Transaction 실행 범위 지정 및 모니터링 시작 설정 -->

    <aop:advisor advice-ref="txAdvice" pointcut-ref="servicePublicMethod" />

    </aop:config>



    src/main/java 에서

    패키지 -> Dao, Biz, Service를 만들어주고 각각 Impl을 만들어준다.


    DaoImpld 에서는

    extends SqlSessionDaoSupport 를 사용한다.


    사용법

    public String getNowDateTime() {

    return getSqlSession().selectOne("IndexDao.getNowDateTime");

    }





    DI의 최종목적

    클래스 <-> 클래스 통신을 한다.

    클래스와 클래스가 서로 안다 -> 강한 결합

    클래스와 클래스가 서로 모른다 -> 약한 결합



    반응형

    댓글

Designed by Tistory.