SlideShare a Scribd company logo
1 of 25
Spring Framework & MyBatis
스프링 프레임워크 & 마이바티스 강의
탑크리에듀 교육센터
CONTENTS
5. 스프링 트랜잭션(Spring Transaction)
5.4 스프링 선언적 트랜잭션 관리
5.4.1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5.4.1.1 스프링 선언적 트랜잭션 관리 – XML 설정방식 예제
5.4.2 스프링 선언적 트랜잭션 관리 – @Transactional 개요
Chapter 5
스프링 트랜잭션(Spring Transaction)
~ 5.4.2.2
5. 스프링 트랜잭션(Spring Transaction)
: AOP를 이용하여 선언적 트랜잭션을 설정하는 방법에는 2가지가 있다.
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
 2가지 방법
1. XML Configuration - 스프링의 빈 설정파일에 <tx:advice> <aop:config> 등의 태그를 사용하여 설정.
2. Transactional Annotation - 해당 메소드에 @Transactional Annotation을 추가하여 설정.(@Transactional)
 Spring2.0 이상에서 tx 스키마에 정의된 <tx:advice> 엘리먼트에 의해 Transaction의 어드바이스를 쉽
게 구현할 수 있다.
 아래와 같이 XML 설정 파일에 spring-aop-4.X.xsd , spring-tx-4.X.xsd를 추가해야 한다
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식

<?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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-
4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-
context-4.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
…
</beans>
)
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
 Spring AOP가 포인트컷 정의를 위해 AspecJ 포인트컷 표현식을 사용하므로 AspectJ 위버 지원라이브
러리를 클래스 패스에 추가해야 한다. 메이븐을 사용한다면 아래 의존 라이브러리를 pom.xml에 추가
한다.

<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
 tx 네임스페이스에서 tx:advice가 가장 중요한데 사용예는 다음과 같다. 또한 스프링 AOP가 프록시 기
반이므로 트랜잭션이 적용될 메소드는 public으로 선언되어야 한다.

<tx:advice id=“txAdvice” transaction-manager=“transactionManager”>
<tx:attributes>
<tx:method name=“insert*” propagation=“REQUIRED”/>
<tx:method name=“get*” propagation=“REQUIRED”read-only=“true”/>
</tx:attributes>
</tx:advice>
<bean id=“transactionManager”
class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=“dataSource” ref=“dataSource”/>
</bean>
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
 tx:attribute에 사용되는 속성
1. name : 적용될 어드바이스에 대응되는 메소드명(필수), 와일드카드 (*)가능
2. isolation : 트랜잭션 격리 수준
3. no-rollback-for : 예외가 발생 했을때 이를 무시하고 Transaction을 롤백하지 않고 계속 진행할 예외를 지정
4. propagation : Transaction 전파방식 지정, 기본값:REQUIRED
5. read-only : 트랜잭션이 읽기 전용인지, 기본값:FALSE
6. rollback-for : 예외가 발생했을 때 트랜잭션을 롤백 시킬 예외들의 구체적인 타입을 콤마로 구분하여 기술
7. timeout : 트랜잭션 타임아웃을 지정
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
 <tx:advice> 자체만 보았을 때는 어느 빈에 advice가 적용되어야 하는지 알 수 없다.
그러므로 Pointcut이 필요하다. (AOP의 Advice에 지나지 않는다.)
<aop:config>
<aop:advisor pointcut=“execution(* *..SpringBoardDAO.*dao(..))”
advice-ref=“txAdvice”/>
</aop:config>
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 springtr1 이라는 이름의 spring maven Project를 생성하자.(EMP 테이블 데이터를 SELECT하고 INSERT하는 예제)
 전체 프로젝트 구성은 아래와 같다.
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 STS에서
New  Project  Spring Legacy Project
Project Name : springtr1
Simple Projects : Simple Spring Maven
 [pom.xml]
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.samples</groupId>
<artifactId>springtr1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<!-- Generic properties -->
<java.version>1.6</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Spring -->
<spring-framework.version>4.2.4.RELEASE</spring-framework.version>
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [pom.xml] 이어서
<!-- Logging -->
<logback.version>1.0.13</logback.version>
<slf4j.version>1.7.5</slf4j.version>
<!-- Test -->
<junit.version>4.11</junit.version>
</properties>
<dependencies>
<!-- Spring and Transactions -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- Logging with SLF4J & LogBack -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [pom.xml] 이어서
<version>${slf4j.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>runtime</scope>
</dependency>
<!-- Test Artifacts -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [pom.xml] 이어서
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.7.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>oracle</id>
<name>ORACLE JDBC Repository</name>
<url>http://maven.jahia.org/maven2</url>
</repository>
</repositories>
</project>
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [Emp.java]
package onj.edu.tr1.model;
public class Emp {
int empno;
String ename;
int deptno;
public Emp(int empno, String ename, int deptno) {
this.empno = empno;
this.ename = ename;
this.deptno = deptno;
}
public int getEmpno() { return empno;}
public void setEmpno(int empno) { this.empno = empno; }
public String getEname() { return ename; }
public void setEname(String ename) { this.ename = ename; }
public int getDeptno() { return deptno; }
public void setDeptno(int deptno) { this.deptno = deptno; }
}
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [OnjDao.java]
package onj.edu.tr1.dao;
//JdbcDaoSupport클래스는 간단한 DataSource를 지원하기 위해 JdbcTemplate 클래스를 지원.
//jdbcTemplate은 DB연결, PrepatedStatement객체생성, 파라미터주입, SQL문장실행,
//DB접속종료등을 전담하며 getJdbcTemplate()을 통해 얻는다.
@Repository("onjDao")
public class OnjDao{
private JdbcTemplate jdbcTemplate;
@Autowired public void setDataSource(DataSource dataSource){
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public List<Emp> getEmpByDeptno(int deptno) {
String sql = "select empno, ename, deptno from emp where deptno = ?";
List<Emp> list = jdbcTemplate.query(
sql,
new Object[] { deptno },
new RowMapper() {
public Object mapRow(ResultSet rs, int index) throws
SQLException {
int empno = rs.getInt("empno");
String ename = rs.getString("ename");
int deptno = rs.getInt("deptno");
return new Emp(empno, ename, deptno);
}
}
);
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [OnjDao.java] 이어서
return list;
}
public void insertEmps() throws Exception {
String sql = "insert into emp(empno, ename, deptno) values (?, ?, ?)";
jdbcTemplate.update(sql, new Object[] { 111, "Onj1" , 10});
jdbcTemplate.update(sql, new Object[] { 222, "Onj2", 10 });
jdbcTemplate.update(sql, new Object[] { 333, "Onj3", 10 });
//같은 데이터를 넣으면 키값이 중복되어 DataAccessException 발생(런타임예외)
jdbcTemplate.update(sql, new Object[] { 333, "Onj3", 10 });
//throw new Exception();
}
}
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [OnjService.java]
package onj.edu.tr1.service;
@Service("onjService")
public class OnjService {
@Autowired
private OnjDao dao;
public OnjService() {}
public OnjService(OnjDao onjDao) {
this.dao = onjDao;
}
public List<Emp> getEmpByDeptno(int deptno) {
return dao.getEmpByDeptno(deptno);
}
public void insertEmps() throws Exception{
dao.insertEmps();
}
}
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [onjoraclejava.xml]
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-
beans-4.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-
context-4.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
<!-- 접속할 DB의 DataSource정의 -->
<bean name="dataSource”
class="org.apache.commons.dbcp.BasicDataSource"
p:driverClassName ="oracle.jdbc.driver.OracleDriver”
p:url = "jdbc:oracle:thin:@192.168.0.27:1521:onj"
p:username = "scott”
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [onjoraclejava.xml] 이어서
p:password = "tiger" />
<!-- 트랜잭션매니저 정의 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 트랜잭션용 Advice 구성 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 예외 중에서 Exception이 발생한 경우에도 롤백이 실행된다는 의미 -->
<!-- 트랜잭션 설정이 된 메소드에서 RuntimeException이 발생한 경우와 Errors가 발생한 경우에만
기본적으로 롤백을 수행하며 그 외의 예외들은 아래와같이직접 설정한 경우에만 롤백을 한다. -->
<tx:method name="*"
propagation="REQUIRED” rollback-for=“Exception” />
</tx:attributes>
</tx:advice>
<!-- aop 네임스페이스를 이용한 트랙잭션이 적용될 매소드(Pointcut), 충고자(Advisor)정의 -->
<aop:config>
<aop:pointcut id="onjPointCut"
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [onjoraclejava.xml] 이어서
expression="execution(* onj.edu.tr1.dao.*Dao.insert*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="onjPointCut" />
</aop:config>
<context:component-scan base-package="onj.edu.tr1.dao"/>
<context:component-scan base-package="onj.edu.tr1.service"/>
</beans>
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식
5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제
 [테스트 방법]
1. OnjDao.java에서 현재대로 키가 중복되는 데이터를 입력해 보라.
트랜잭션은 롤백된다.
2. 키 중복되는 부분을 주석으로 막고 실행해보라.
트랜잭션은 정상 commit 된다.
3. OnjDao.java에서 insertEmps() 메소드의 throw new Exception(); 부분 주석을 풀고 테스트
- onjoraclejava.xml에서
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>인 경우
트랜잭션은 롤백된다.
- onjoraclejava.xml에서
<tx:method name="*" propagation="REQUIRED“ no-rollback-for=“Exception”/>인 경우
트랜잭션은 롤백되지 않는다. 정상 commit된다.
5. 스프링 트랜잭션(Spring Transaction)
5-4. 스프링 트랜잭션관리
5-4-2 선언적 트랜잭션 관리 – @Transactional 개요
 XML 설정에 <tx:annotation-driven /> 요소가 설정 되어 있다면 트랜잭션을 어노테이션으로 설정 가능 하다.
이 방법은 직관적이고 알기 쉽지만 수정시 자바 코드 자체를 수정해야 한다는 단점이 있다.
 트랜잭션 처리를 원하는 메서드에 @Transactional이란 어노테이션을 사용하면 되고 <aop>설정은 어노테이션
과 전혀 무관하다.
 인터페이스, 클래스, 메서드에 동시에 트랜잭션 어노테이션이 설정 되어 있다면 스프링은 메서드 어노테이션을
제일 먼저 고려하고 그 다음이 클래스, 인터페이스 순서로 고려 합니다.
[ 교육생과 함께 수강료 0원 + 훈련지원금 최대416,000원으로 취업까지 성공패키지]
전자정부프레임워크기반 응용SW엔지니어링 구직자 양성과정(평일주간)
일 시 : 2017년03월27일(월) ~ 2017년11월08일(수)
장 소 : 탑 크리에듀교육센터
수강료 : 전액무료
신 청: 02-851-4790 /http://www.topcredu.co.kr/sub/crcl/view/open/2057
“ 여러분의 도전을 응원합니다. ”
Any Questions ?
THANK YOU
FOR YOUR ATTENTION
무료국비지원교육 / 구로자바학원 _ 탑크리에듀 교육센터
http://www.topcredu.co.kr

More Related Content

What's hot

03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법Hankyo
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugbeom kyun choi
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유beom kyun choi
 
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
03.실행환경 실습교재(배치처리)
03.실행환경 실습교재(배치처리)03.실행환경 실습교재(배치처리)
03.실행환경 실습교재(배치처리)Hankyo
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기beom kyun choi
 
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
04.실행환경 실습교재(화면처리)
04.실행환경 실습교재(화면처리)04.실행환경 실습교재(화면처리)
04.실행환경 실습교재(화면처리)Hankyo
 

What's hot (14)

03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유
 
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)
 
03.실행환경 실습교재(배치처리)
03.실행환경 실습교재(배치처리)03.실행환경 실습교재(배치처리)
03.실행환경 실습교재(배치처리)
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
04.실행환경 실습교재(화면처리)
04.실행환경 실습교재(화면처리)04.실행환경 실습교재(화면처리)
04.실행환경 실습교재(화면처리)
 
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
 
Redux
ReduxRedux
Redux
 

Viewers also liked

Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Fa102b
Fa102bFa102b
Fa102baizzo2
 
Fa102a assignthree 1
Fa102a assignthree 1Fa102a assignthree 1
Fa102a assignthree 1aizzo2
 
John Litteral Resume
John Litteral ResumeJohn Litteral Resume
John Litteral ResumeJohn Litteral
 
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle엑셈
 
JVM Synchronization_Wh apm
JVM Synchronization_Wh apmJVM Synchronization_Wh apm
JVM Synchronization_Wh apm엑셈
 
IBM JVM GC_Wh apm
IBM JVM GC_Wh apmIBM JVM GC_Wh apm
IBM JVM GC_Wh apm엑셈
 
SQL PlAN MANAGEMENT 활용_Wh oracle
SQL PlAN MANAGEMENT 활용_Wh oracleSQL PlAN MANAGEMENT 활용_Wh oracle
SQL PlAN MANAGEMENT 활용_Wh oracle엑셈
 
TCP 연결 과정_Wh apm
TCP 연결 과정_Wh apmTCP 연결 과정_Wh apm
TCP 연결 과정_Wh apm엑셈
 
KEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracleKEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracle엑셈
 
WINDOW FUNCTION의 이해와 활용방법_Wh oracle
WINDOW FUNCTION의 이해와 활용방법_Wh oracleWINDOW FUNCTION의 이해와 활용방법_Wh oracle
WINDOW FUNCTION의 이해와 활용방법_Wh oracle엑셈
 
Runtime Data Areas_Wh apm
Runtime Data Areas_Wh apmRuntime Data Areas_Wh apm
Runtime Data Areas_Wh apm엑셈
 

Viewers also liked (14)

스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中
스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中
스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中
 
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
 
Fa102b
Fa102bFa102b
Fa102b
 
Fa102a assignthree 1
Fa102a assignthree 1Fa102a assignthree 1
Fa102a assignthree 1
 
John Litteral Resume
John Litteral ResumeJohn Litteral Resume
John Litteral Resume
 
WFC awards 2011
WFC awards 2011WFC awards 2011
WFC awards 2011
 
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
 
JVM Synchronization_Wh apm
JVM Synchronization_Wh apmJVM Synchronization_Wh apm
JVM Synchronization_Wh apm
 
IBM JVM GC_Wh apm
IBM JVM GC_Wh apmIBM JVM GC_Wh apm
IBM JVM GC_Wh apm
 
SQL PlAN MANAGEMENT 활용_Wh oracle
SQL PlAN MANAGEMENT 활용_Wh oracleSQL PlAN MANAGEMENT 활용_Wh oracle
SQL PlAN MANAGEMENT 활용_Wh oracle
 
TCP 연결 과정_Wh apm
TCP 연결 과정_Wh apmTCP 연결 과정_Wh apm
TCP 연결 과정_Wh apm
 
KEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracleKEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracle
 
WINDOW FUNCTION의 이해와 활용방법_Wh oracle
WINDOW FUNCTION의 이해와 활용방법_Wh oracleWINDOW FUNCTION의 이해와 활용방법_Wh oracle
WINDOW FUNCTION의 이해와 활용방법_Wh oracle
 
Runtime Data Areas_Wh apm
Runtime Data Areas_Wh apmRuntime Data Areas_Wh apm
Runtime Data Areas_Wh apm
 

Similar to 스프링 트랜잭션(SpringTransaction)

02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)Hankyo
 
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육탑크리에듀(구로디지털단지역3번출구 2분거리)
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQLI Goo Lee
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin GuideJEONGPHIL HAN
 
03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)Hankyo
 
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)Hankyo
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQLJAEGEUN YU
 
Anyframe Enterprise JAVA Center-cut Framework
Anyframe Enterprise JAVA Center-cut FrameworkAnyframe Enterprise JAVA Center-cut Framework
Anyframe Enterprise JAVA Center-cut FrameworkInsuk (Chris) Cho
 
스사모 테크톡 - Apache Flink 둘러보기
스사모 테크톡 - Apache Flink 둘러보기스사모 테크톡 - Apache Flink 둘러보기
스사모 테크톡 - Apache Flink 둘러보기SangWoo Kim
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
 
톰캣 #10-모니터링
톰캣 #10-모니터링톰캣 #10-모니터링
톰캣 #10-모니터링GyuSeok Lee
 
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
vine webdev
vine webdevvine webdev
vine webdevdcfc1997
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQLI Goo Lee
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 Chanwook Park
 

Similar to 스프링 트랜잭션(SpringTransaction) (20)

02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)
 
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin Guide
 
03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)
 
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
Anyframe Enterprise JAVA Center-cut Framework
Anyframe Enterprise JAVA Center-cut FrameworkAnyframe Enterprise JAVA Center-cut Framework
Anyframe Enterprise JAVA Center-cut Framework
 
스사모 테크톡 - Apache Flink 둘러보기
스사모 테크톡 - Apache Flink 둘러보기스사모 테크톡 - Apache Flink 둘러보기
스사모 테크톡 - Apache Flink 둘러보기
 
Flux 예제 분석 2
Flux 예제 분석 2Flux 예제 분석 2
Flux 예제 분석 2
 
Spring boot actuator
Spring boot   actuatorSpring boot   actuator
Spring boot actuator
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계
 
톰캣 #10-모니터링
톰캣 #10-모니터링톰캣 #10-모니터링
톰캣 #10-모니터링
 
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
vine webdev
vine webdevvine webdev
vine webdev
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQL
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리)

[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 

스프링 트랜잭션(SpringTransaction)

  • 1. Spring Framework & MyBatis 스프링 프레임워크 & 마이바티스 강의 탑크리에듀 교육센터
  • 2. CONTENTS 5. 스프링 트랜잭션(Spring Transaction) 5.4 스프링 선언적 트랜잭션 관리 5.4.1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5.4.1.1 스프링 선언적 트랜잭션 관리 – XML 설정방식 예제 5.4.2 스프링 선언적 트랜잭션 관리 – @Transactional 개요
  • 4. 5. 스프링 트랜잭션(Spring Transaction) : AOP를 이용하여 선언적 트랜잭션을 설정하는 방법에는 2가지가 있다. 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식  2가지 방법 1. XML Configuration - 스프링의 빈 설정파일에 <tx:advice> <aop:config> 등의 태그를 사용하여 설정. 2. Transactional Annotation - 해당 메소드에 @Transactional Annotation을 추가하여 설정.(@Transactional)  Spring2.0 이상에서 tx 스키마에 정의된 <tx:advice> 엘리먼트에 의해 Transaction의 어드바이스를 쉽 게 구현할 수 있다.  아래와 같이 XML 설정 파일에 spring-aop-4.X.xsd , spring-tx-4.X.xsd를 추가해야 한다
  • 5. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식  <?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop- 4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring- context-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> … </beans> )
  • 6. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식  Spring AOP가 포인트컷 정의를 위해 AspecJ 포인트컷 표현식을 사용하므로 AspectJ 위버 지원라이브 러리를 클래스 패스에 추가해야 한다. 메이븐을 사용한다면 아래 의존 라이브러리를 pom.xml에 추가 한다.  <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${org.aspectj-version}</version> </dependency>
  • 7. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식  tx 네임스페이스에서 tx:advice가 가장 중요한데 사용예는 다음과 같다. 또한 스프링 AOP가 프록시 기 반이므로 트랜잭션이 적용될 메소드는 public으로 선언되어야 한다.  <tx:advice id=“txAdvice” transaction-manager=“transactionManager”> <tx:attributes> <tx:method name=“insert*” propagation=“REQUIRED”/> <tx:method name=“get*” propagation=“REQUIRED”read-only=“true”/> </tx:attributes> </tx:advice> <bean id=“transactionManager” class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”> <property name=“dataSource” ref=“dataSource”/> </bean>
  • 8. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식  tx:attribute에 사용되는 속성 1. name : 적용될 어드바이스에 대응되는 메소드명(필수), 와일드카드 (*)가능 2. isolation : 트랜잭션 격리 수준 3. no-rollback-for : 예외가 발생 했을때 이를 무시하고 Transaction을 롤백하지 않고 계속 진행할 예외를 지정 4. propagation : Transaction 전파방식 지정, 기본값:REQUIRED 5. read-only : 트랜잭션이 읽기 전용인지, 기본값:FALSE 6. rollback-for : 예외가 발생했을 때 트랜잭션을 롤백 시킬 예외들의 구체적인 타입을 콤마로 구분하여 기술 7. timeout : 트랜잭션 타임아웃을 지정
  • 9. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식  <tx:advice> 자체만 보았을 때는 어느 빈에 advice가 적용되어야 하는지 알 수 없다. 그러므로 Pointcut이 필요하다. (AOP의 Advice에 지나지 않는다.) <aop:config> <aop:advisor pointcut=“execution(* *..SpringBoardDAO.*dao(..))” advice-ref=“txAdvice”/> </aop:config>
  • 10. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  springtr1 이라는 이름의 spring maven Project를 생성하자.(EMP 테이블 데이터를 SELECT하고 INSERT하는 예제)  전체 프로젝트 구성은 아래와 같다.
  • 11. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  STS에서 New  Project  Spring Legacy Project Project Name : springtr1 Simple Projects : Simple Spring Maven  [pom.xml] <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework.samples</groupId> <artifactId>springtr1</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <!-- Generic properties --> <java.version>1.6</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- Spring --> <spring-framework.version>4.2.4.RELEASE</spring-framework.version>
  • 12. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [pom.xml] 이어서 <!-- Logging --> <logback.version>1.0.13</logback.version> <slf4j.version>1.7.5</slf4j.version> <!-- Test --> <junit.version>4.11</junit.version> </properties> <dependencies> <!-- Spring and Transactions --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-framework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring-framework.version}</version> </dependency> <!-- Logging with SLF4J & LogBack --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId>
  • 13. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [pom.xml] 이어서 <version>${slf4j.version}</version> <scope>compile</scope> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> <scope>runtime</scope> </dependency> <!-- Test Artifacts --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.5.4</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId>
  • 14. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [pom.xml] 이어서 <version>1.4</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.2.3.RELEASE</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.1.0.7.0</version> </dependency> </dependencies> <repositories> <repository> <id>oracle</id> <name>ORACLE JDBC Repository</name> <url>http://maven.jahia.org/maven2</url> </repository> </repositories> </project>
  • 15. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [Emp.java] package onj.edu.tr1.model; public class Emp { int empno; String ename; int deptno; public Emp(int empno, String ename, int deptno) { this.empno = empno; this.ename = ename; this.deptno = deptno; } public int getEmpno() { return empno;} public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public int getDeptno() { return deptno; } public void setDeptno(int deptno) { this.deptno = deptno; } }
  • 16. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [OnjDao.java] package onj.edu.tr1.dao; //JdbcDaoSupport클래스는 간단한 DataSource를 지원하기 위해 JdbcTemplate 클래스를 지원. //jdbcTemplate은 DB연결, PrepatedStatement객체생성, 파라미터주입, SQL문장실행, //DB접속종료등을 전담하며 getJdbcTemplate()을 통해 얻는다. @Repository("onjDao") public class OnjDao{ private JdbcTemplate jdbcTemplate; @Autowired public void setDataSource(DataSource dataSource){ this.jdbcTemplate = new JdbcTemplate(dataSource); } public List<Emp> getEmpByDeptno(int deptno) { String sql = "select empno, ename, deptno from emp where deptno = ?"; List<Emp> list = jdbcTemplate.query( sql, new Object[] { deptno }, new RowMapper() { public Object mapRow(ResultSet rs, int index) throws SQLException { int empno = rs.getInt("empno"); String ename = rs.getString("ename"); int deptno = rs.getInt("deptno"); return new Emp(empno, ename, deptno); } } );
  • 17. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [OnjDao.java] 이어서 return list; } public void insertEmps() throws Exception { String sql = "insert into emp(empno, ename, deptno) values (?, ?, ?)"; jdbcTemplate.update(sql, new Object[] { 111, "Onj1" , 10}); jdbcTemplate.update(sql, new Object[] { 222, "Onj2", 10 }); jdbcTemplate.update(sql, new Object[] { 333, "Onj3", 10 }); //같은 데이터를 넣으면 키값이 중복되어 DataAccessException 발생(런타임예외) jdbcTemplate.update(sql, new Object[] { 333, "Onj3", 10 }); //throw new Exception(); } }
  • 18. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [OnjService.java] package onj.edu.tr1.service; @Service("onjService") public class OnjService { @Autowired private OnjDao dao; public OnjService() {} public OnjService(OnjDao onjDao) { this.dao = onjDao; } public List<Emp> getEmpByDeptno(int deptno) { return dao.getEmpByDeptno(deptno); } public void insertEmps() throws Exception{ dao.insertEmps(); } }
  • 19. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [onjoraclejava.xml] <?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring- beans-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring- context-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> <!-- 접속할 DB의 DataSource정의 --> <bean name="dataSource” class="org.apache.commons.dbcp.BasicDataSource" p:driverClassName ="oracle.jdbc.driver.OracleDriver” p:url = "jdbc:oracle:thin:@192.168.0.27:1521:onj" p:username = "scott”
  • 20. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [onjoraclejava.xml] 이어서 p:password = "tiger" /> <!-- 트랜잭션매니저 정의 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 트랜잭션용 Advice 구성 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 예외 중에서 Exception이 발생한 경우에도 롤백이 실행된다는 의미 --> <!-- 트랜잭션 설정이 된 메소드에서 RuntimeException이 발생한 경우와 Errors가 발생한 경우에만 기본적으로 롤백을 수행하며 그 외의 예외들은 아래와같이직접 설정한 경우에만 롤백을 한다. --> <tx:method name="*" propagation="REQUIRED” rollback-for=“Exception” /> </tx:attributes> </tx:advice> <!-- aop 네임스페이스를 이용한 트랙잭션이 적용될 매소드(Pointcut), 충고자(Advisor)정의 --> <aop:config> <aop:pointcut id="onjPointCut"
  • 21. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [onjoraclejava.xml] 이어서 expression="execution(* onj.edu.tr1.dao.*Dao.insert*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="onjPointCut" /> </aop:config> <context:component-scan base-package="onj.edu.tr1.dao"/> <context:component-scan base-package="onj.edu.tr1.service"/> </beans>
  • 22. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-1 스프링 선언적 트랜잭션 관리 – XML 설정방식 5-4-1-1 선언적 트랜잭션 관리 – XML 설정방식 예제  [테스트 방법] 1. OnjDao.java에서 현재대로 키가 중복되는 데이터를 입력해 보라. 트랜잭션은 롤백된다. 2. 키 중복되는 부분을 주석으로 막고 실행해보라. 트랜잭션은 정상 commit 된다. 3. OnjDao.java에서 insertEmps() 메소드의 throw new Exception(); 부분 주석을 풀고 테스트 - onjoraclejava.xml에서 <tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>인 경우 트랜잭션은 롤백된다. - onjoraclejava.xml에서 <tx:method name="*" propagation="REQUIRED“ no-rollback-for=“Exception”/>인 경우 트랜잭션은 롤백되지 않는다. 정상 commit된다.
  • 23. 5. 스프링 트랜잭션(Spring Transaction) 5-4. 스프링 트랜잭션관리 5-4-2 선언적 트랜잭션 관리 – @Transactional 개요  XML 설정에 <tx:annotation-driven /> 요소가 설정 되어 있다면 트랜잭션을 어노테이션으로 설정 가능 하다. 이 방법은 직관적이고 알기 쉽지만 수정시 자바 코드 자체를 수정해야 한다는 단점이 있다.  트랜잭션 처리를 원하는 메서드에 @Transactional이란 어노테이션을 사용하면 되고 <aop>설정은 어노테이션 과 전혀 무관하다.  인터페이스, 클래스, 메서드에 동시에 트랜잭션 어노테이션이 설정 되어 있다면 스프링은 메서드 어노테이션을 제일 먼저 고려하고 그 다음이 클래스, 인터페이스 순서로 고려 합니다.
  • 24. [ 교육생과 함께 수강료 0원 + 훈련지원금 최대416,000원으로 취업까지 성공패키지] 전자정부프레임워크기반 응용SW엔지니어링 구직자 양성과정(평일주간) 일 시 : 2017년03월27일(월) ~ 2017년11월08일(수) 장 소 : 탑 크리에듀교육센터 수강료 : 전액무료 신 청: 02-851-4790 /http://www.topcredu.co.kr/sub/crcl/view/open/2057 “ 여러분의 도전을 응원합니다. ”
  • 25. Any Questions ? THANK YOU FOR YOUR ATTENTION 무료국비지원교육 / 구로자바학원 _ 탑크리에듀 교육센터 http://www.topcredu.co.kr