티스토리 뷰
1. ORM : Object Relational Mapping Framework
- 간편한 트랜잭션( 작업단위를 모아둔 것) 과 일관된 설정으로 데이터베이스의 접근이 용이하다.
- 커넥션풀의 자동 지원으로 복잡한 설정이 따로 필요하지 않다.
2. MyBatis 연동하기
먼저 MyBatis 연동을 위한 Dependency를 추가한다.
총 6개의 Dependency 를 추가한다.
Connection Pool을 지원하는 DataSource를 생성하기 위하여 rootContext.xml을 생성하여 아래의 코드를 추가한다.
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 |
<!-- Transaction 설정하기 -->
<!-- Transaction Manager 설정 (rollback, commit 수행)-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name="dataSource" ref="dataSource" />
</bean>
<!-- Transaction 대상 설정 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="tx*" rollback-for="RuntimeException" />
<!-- CRUD에 관한 method -->
<!-- insert로 시작하는 것을 실행할 때 RuntimeException이 발생하면 rollback 한다. -->
<tx:method name="insert*" rollback-for="RuntimeException" />
<tx:method name="write*" rollback-for="RuntimeException" />
<tx:method name="add*" rollback-for="RuntimeException" />
<tx:method name="create*" rollback-for="RuntimeException" />
<tx:method name="regist*" rollback-for="RuntimeException"/>
<tx:method name="set*" rollback-for="RuntimeException"/>
<tx:method name="update*" rollback-for="RuntimeException" />
<tx:method name="modify*" rollback-for="RuntimeException" />
<tx:method name="edit*" rollback-for="RuntimeException" />
<tx:method name="change*" rollback-for="RuntimeException" />
<tx:method name="delete*" rollback-for="RuntimeException" />
<tx:method name="remove*" rollback-for="RuntimeException" />
<tx:method name="terminate*" rollback-for="RuntimeException" />
<!-- insert update delete 를 못한다. -->
<tx:method name="read*" read-only="true" />
<tx:method name="select*" read-only="true" />
<tx:method name="get*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- public | 모든 리턴타입 | com.ktds.jmj의 모든패키지의 | web 패키지 | 모든 클래스 | 모든 메소드 | 안의 것 전부 다-->
<aop:pointcut expression="execution(public * com.ktds.jmj..web.*.*(..))" id="controllerTx" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="controllerTx" />
</aop:config> |
cs |
이렇게 rootContext.xml 의 작성을 끝내고 DAO와 Impl를 생성한다.
ArticleDAOImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
package com.ktds.jmj.dao.impl;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import com.ktds.jmj.dao.ArticleDAO;
public class ArticleDAOImpl extends SqlSessionDaoSupport implements ArticleDAO {
//extends 다음 implements 순서중요
//ArticleDAOImpl 위에 커서 놓고 Ctrl+1 단축키
//결과가 한개일 경우 selectOne
@Override
public String getNowSystemDate() {
return getSqlSession().selectOne("ArticleDAO.getNowSystemDate");
}
} |
cs |
그리고 articleContext.xml을 따로 생성하여 sqlSessionTemplate와 연결해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="articleDAO"
class="com.ktds.jmj.dao.impl.ArticleDAOImpl" >
<property name="sqlSessionTemplate" ref="sqlSessionTemplate" />
</bean>
<bean id="articleBiz"
class="com.ktds.jmj.biz.impl.ArticleBizImpl" >
<property name="articleDAO" ref="articleDAO" />
</bean>
</beans> |
cs |
그리고 이전에 했던 작업과 같이 Controller 에 DAO를 추가해주고, Bean DI를 추가한다.
마지막으로 Mapper과 Configration을 생성하고 설정해야 한다.
Mapper는 query를 쓰는 곳이다. test를 위해 SYSDATE를 출력해보았다.
1
2
3
4
5
6
7
8
9
10
11 |
<?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="ArticleDAO">
<select id="getNowSystemDate" resultType="string">
SELECT SYSDATE
FROM DUAL
</select>
</mapper> |
cs |
Configration 은 mybatis.xml 의 이름으로 파일을 생성하여 아래의 코드를 추가한다.
1
2
3
4
5
6
7
8
9
10
11 |
<?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>
<mappers>
<mapper resource="/com/ktds/jmj/dao/impl/sql/articleDAO.xml" />
</mappers>
</configuration>
|
cs |
MyBatis의 연동 끝
rootContext.xml 의 Beans Graph
rootContext.xml의 코드
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 |
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
<!-- Connection Pool -->
<!-- destroy-method="close" 는 사용하지 않는 클래스?를 닫아준다. -->
<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>
<!-- MyBatis 가 사용할 Database에 연결하도록 설정 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean" >
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classPath:/mybatis.xml" />
</bean>
<!-- MyBatis의 CRUD 템플릿을 사용 할 수 있도록 설정 -->
<bean id="sqlSessionTemplate"
class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory" />
</bean>
<!-- Transaction 설정하기 -->
<!-- Transaction Manager 설정 (rollback, commit 수행)-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name="dataSource" ref="dataSource" />
</bean>
<!-- Transaction 대상 설정 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="tx*" rollback-for="RuntimeException" />
<!-- CRUD에 관한 method -->
<!-- insert로 시작하는 것을 실행할 때 RuntimeException이 발생하면 rollback 한다. -->
<tx:method name="insert*" rollback-for="RuntimeException" />
<tx:method name="write*" rollback-for="RuntimeException" />
<tx:method name="add*" rollback-for="RuntimeException" />
<tx:method name="create*" rollback-for="RuntimeException" />
<tx:method name="regist*" rollback-for="RuntimeException"/>
<tx:method name="set*" rollback-for="RuntimeException"/>
<tx:method name="update*" rollback-for="RuntimeException" />
<tx:method name="modify*" rollback-for="RuntimeException" />
<tx:method name="edit*" rollback-for="RuntimeException" />
<tx:method name="change*" rollback-for="RuntimeException" />
<tx:method name="delete*" rollback-for="RuntimeException" />
<tx:method name="remove*" rollback-for="RuntimeException" />
<tx:method name="terminate*" rollback-for="RuntimeException" />
<!-- insert update delete 를 못한다. -->
<tx:method name="read*" read-only="true" />
<tx:method name="select*" read-only="true" />
<tx:method name="get*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- public | 모든 리턴타입 | com.ktds.jmj의 모든패키지의 | web 패키지 | 모든 클래스 | 모든 메소드 | 안의 것 전부 다-->
<aop:pointcut expression="execution(public * com.ktds.jmj..web.*.*(..))" id="controllerTx" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="controllerTx" />
</aop:config>
</beans>
|
cs |
'BackEnd > Spring' 카테고리의 다른 글
[Spring] Dynamic SQL (0) | 2016.04.20 |
---|---|
[Spring] Mapper XML Files ( select / insert, update, delete / parameters ) (0) | 2016.04.20 |
[Spring] 파일 업로드 (0) | 2016.04.20 |
[Spring] Controller의 리턴 타입 (0) | 2016.04.15 |
[Spring] 예외처리 (1) | 2016.04.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- order by
- onPostExecute
- AlertDialog.Builder
- indexOf
- boj
- onBackPressed
- REDIRECT
- DFS
- 예외처리
- sort
- 안드로이드 스튜디오
- jsp
- RequestMapping
- restfb
- BFS
- table
- list
- Baekjoon Online Judege
- servlet
- controller
- 자바
- INSERT
- mybatis
- DP
- 안드로이드 비콘
- algorithm
- 이클립스
- maven
- java
- 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 |
글 보관함