2014년 5월 21일 수요일

[오라클자바커뮤니티 스프링교육강좌,스프링3트랜잭션강좌]트랜잭션 어드바이스를 통한 선언적인 방식의 트랜잭션 관리(XML설정방식),spring framework3.X transaction Spring2.0 이상에서 tx 스키마에 정의된 엘리먼트에 의해 Transaction의 어드바이스를 쉽게 구현할 수 있다. 아래와 같이 XML 설정 파일에 spring-aop-3.0.xsd , spring-tx-3.X.xsd를 추가해야 한다. 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:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> Spring AOP가 포인트컷 정의를 위해 AspecJ 포인트컷 표현식을 사용하므로 AspectJ 위버 지원라이브러리를 클래스 패스에 추가해야 한다. 메이븐을 사용한다면 아래 의존 라이브러리를 pom.xml에 추가한다. org.aspectj aspectjweaver 1.6.11 tx 네임스페이스에서 tx:advice가 가장 중요한데 사용예는 다음과 같다. 또한 스프링 AOP가 프록시 기반이므로 트랜잭션이 적용될 메소드는 public으로 선언되어야 한다. tx:attribute에 사용되는 속성 name : 적용될 어드바이스에 대응되는 메소드명(필수), 와일드카드 (*)가능 isolation : 트랜잭션 격리 수준 no-rollback-for : 예외가 발생했을때 이를 무시하고 Transaction을 롤백하지 않고 계속 진행할 예외를 지정 propagation : Transaction 전파방식 지정, 기본값:REQUIRED read-only : 트랜잭션이 읽기 전용인지, 기본값:FALSE rollback-for : 예외가 발생했을 때 트랜잭션을 롤백 시킬 예외들의 구체적인 타입을 콤마로 구분하여 기술 timeout : 트랜잭션 타임아웃을 지정 자체만 보았을 때는 어느 빈에 advice가 적용되어야 하는지 알수 없다. 그러므로 PointCut이 필요하다.( AOP의 Advice에 지나지 않는다. ) [출처] 오라클자바커뮤니티 - http://www.oraclejavacommunity.co.kr/bbs/board.php?bo_table=LecSpring&wr_id=375 오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급 www.oraclejavacommunity.com 평일주간(9:30~18:20) 개강 (5/26)SQL초보에서실전전문가까지 (5/26)안드로이드개발자과정 (5/26)C#4.0,ADO.NET,Network 프로그래밍 (5/26)[기업100%환급]Spring ,MyBatis,Hibernate실무과정 (5/27)JAVA,ORACLE 실무개발자과정 (5/28)[교육전취업확정]Spring,MyBatis,XPlatform실무프로젝트과정 (5/30)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 (5/30)[기업100%환급]SQL기초에서 Schema Object까지 (6/09)[기업100%환급]PL/SQL,ORACLE HINT,TUNING 평일야간(19:00~21:50) 개강 (5/22)안드로이드개발자과정 (5/22)C#,ASP.NET마스터 (5/23)SQL초보에서실전전문가까지 (5/26)웹퍼블리싱 마스터 (5/28)Spring3.X, MyBatis, Hibernate실무과정 (5/29)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 주말(10:00~17:50) 개강 (5/24)Spring3.X, MyBatis, Hibernate실무과정 (5/24)C#,ASP.NET마스터 (5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 (5/24)안드로이드개발자과정 (5/24)SQL초보에서실전전문가까지 (5/24)실무예제로 배워보는 jQuery(개발자/디자이너를위한) 주말저녁(18:30~22:20) 개강 (5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지

[오라클자바커뮤니티 스프링교육강좌,스프링3트랜잭션강좌]트랜잭션 어드바이스를 통한 선언적인 방식의 트랜잭션 관리(XML설정방식),spring framework3.X transaction
 
Spring2.0 이상에서 tx 스키마에 정의된 <ta:advice> 엘리먼트에 의해 Transaction의 어드바이스를 쉽게 구현할 수 있다. 

아래와 같이 XML 설정 파일에 spring-aop-3.0.xsd , spring-tx-3.X.xsd를 추가해야 한다.
 
<beans xmlns="http://www.springframework.org/schema/beans":namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
       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:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
             http://www.springframework.org/schema/aop
             http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd
             http://www.springframework.org/schema/tx
             http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
 

Spring AOP가 포인트컷 정의를 위해 AspecJ 포인트컷 표현식을 사용하므로 AspectJ 위버 지원라이브러리를 클래스 패스에 추가해야 한다. 메이븐을 사용한다면 아래 의존 라이브러리를 pom.xml에 추가한다.

  <dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjweaver</artifactId>
   <version>1.6.11</version>
  </dependency>
 

tx 네임스페이스에서 tx:advice가 가장 중요한데 사용예는 다음과 같다.
또한 스프링 AOP가 프록시 기반이므로 트랜잭션이 적용될 메소드는 public으로 선언되어야 한다.
 
<tx:advice id=“txAdvice” transaction-manager=“transactionManager”>
  <tx:attributes>
    <tx:method name=“*dao” propagation=“REQUIRED”/>
    <tx:method name=“*” propagation=“REQUIRED”read-only=“true”/>
  </tx:attributes>
</tx:advice>
<bean id=“transactionManager” class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”>
  <property name=“dataSource” ref=“dataSource”/>
</bean>
 
tx:attribute에 사용되는 속성
name : 적용될 어드바이스에 대응되는 메소드명(필수), 와일드카드 (*)가능
isolation : 트랜잭션 격리 수준
no-rollback-for : 예외가 발생했을때 이를 무시하고 Transaction을 롤백하지 않고 계속 진행할 예외를 지정
propagation : Transaction 전파방식 지정, 기본값:REQUIRED
read-only : 트랜잭션이 읽기 전용인지, 기본값:FALSE
rollback-for : 예외가 발생했을 때 트랜잭션을 롤백 시킬 예외들의 구체적인 타입을 콤마로 구분하여 기술
timeout : 트랜잭션 타임아웃을 지정
 
<tx:advice> 자체만 보았을 때는 어느 빈에 advice가 적용되어야 하는지 알수 없다. 그러므로 PointCut이 필요하다.( AOP의 Advice에 지나지 않는다. )

<aop:config>
  <aop:advisor pointcut=“execution(* *..SpringBoardDAO.*dao(..))”
                 advice-ref=“txAdvice”/>
</aop:config>
오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급 www.oraclejavacommunity.com

평일주간(9:30~18:20) 개강
(5/26)SQL초보에서실전전문가까지
(5/26)안드로이드개발자과정
(5/26)C#4.0,ADO.NET,Network 프로그래밍
(5/26)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(5/27)JAVA,ORACLE 실무개발자과정
(5/28)[교육전취업확정]Spring,MyBatis,XPlatform실무프로젝트과정
(5/30)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(5/30)[기업100%환급]SQL기초에서 Schema Object까지
(6/09)[기업100%환급]PL/SQL,ORACLE HINT,TUNING

평일야간(19:00~21:50) 개강
(5/22)안드로이드개발자과정
(5/22)C#,ASP.NET마스터
(5/23)SQL초보에서실전전문가까지
(5/26)웹퍼블리싱 마스터
(5/28)Spring3.X, MyBatis, Hibernate실무과정
(5/29)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지

주말(10:00~17:50) 개강
(5/24)Spring3.X, MyBatis, Hibernate실무과정
(5/24)C#,ASP.NET마스터
(5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(5/24)안드로이드개발자과정
(5/24)SQL초보에서실전전문가까지
(5/24)실무예제로 배워보는 jQuery(개발자/디자이너를위한)

주말저녁(18:30~22:20) 개강
(5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지



댓글 없음:

댓글 쓰기