프로 그래 밍 트 랜 잭 션, XML 설정 트 랜 잭 션, 주해 구현 트 랜 잭 션

8856 단어 html

Spring 2.0 프레임 워 크 의 사무 처 리 는 두 가지 가 있 습 니 다.
1. 인 코딩 식 사무, 이 건 말 하지 않 습 니 다.
2 성 명 식 사무, 이것 만 말 해.
 
성명 식 사 무 는 또 세 가지 실현 방법 이 있다.
1 (제1 종) 최초의 방법 은 TransactionProxy Factory Bean 을 사용 합 니 다. 그 는 AOP 대리 기능 을 가 진 Factory Bean 입 니 다. 그 가 돌아 온 대상 은 업무 가 있 습 니 다.
spring 의 프로필 XML 에 설정 해 야 합 니 다. 귀 찮 습 니 다. 자세히 말씀 드 리 지 않 겠 습 니 다.
<!--     DAO -->
<bean id="go_TestPOAO" class="pic.dao.transaction_test.TestPOAOImpl" parent="go_POAOBase"></bean>	
	
<!--     DAO         -->
<bean id="go_TestPOAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">  
        <property name="proxyInterfaces">  
            <list>   
                <value>pic.dao.transaction_test.TestPOAO</value>  
            </list>  
        </property>  
        <property name="target" ref="go_TestPOAO"/>   
        <property name="transactionManager" ref="transactionManager"/>  
        <property name="transactionAttributes">  
            <props>  
                <prop key="insert*">PROPAGATION_REQUIRED</prop>  
            </props>  
        </property>  
</bean> 

 2 (두 번 째) < tx: > 를 사용 하여 성명 식 사 무 를 수행 하고 spring 의 프로필 XML 에 설정 해 야 합 니 다. 귀 찮 습 니 다. 자세히 설명 하지 않 습 니 다.
<tx:advice id="">
.....
</tx:advice>

<aop:config>
.....
</aop:config>

 
 
3 (세 번 째) 이 방법 은 편리 합 니 다. 주 해 를 사용 하여 성명 식 사 무 를 실현 합 니 다. 다음은 이 방법 을 자세히 말씀 드 리 겠 습 니 다.
 
첫 번 째 단계: < tx: > 네 임 스페이스 를 도입 하여 spring 설정 파일 에서 수정 합 니 다. beans 루트 요소 에 세 줄 이 더 있 습 니 다. 다음 과 같 습 니 다.
<?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:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

 
두 번 째 단계: spring 설정 파일 에서 변경 되 었 습 니 다. @ Transactional 주 해 를 가 진 bean 을 자동 으로 성명 식 트 랜 잭 션 지원 으로 설정 합 니 다.
<!--JDBC     ,                ,      Hibernate,  Hibernate       -->	
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref local="dataSource"/>
		</property>
</bean>	
		
<!--            -->
<tx:annotation-driven transaction-manager="transactionManager"/>

 
세 번 째 단계: 인터페이스 나 클래스 의 성명 에 @ Transactional 을 쓰 십시오. 인터페이스 에 만 쓰 면 인터페이스의 실현 클래스 가 계 승 됩 니 다.
인터페이스의 실현 클래스 의 구체 적 인 방법 은 클래스 성명 처 의 설정 도 덮어 쓸 수 있다.
@Transactional
public class TestPOAOImpl extends POAOBase implements TestPOAO
{	
    @Transactional(isolation = Isolation.READ_COMMITTED)
    public void test1()
	{
		String sql = "INSERT INTO sy_test (NAME,AGE) VALUES('    ',30)";
		execute(sql);

		sql = "INSERT INTO sy_test (NAME,AGE) VALUES('    ',26)";
		execute(sql);

		int a = 9 / 0; //  

		sql = "INSERT INTO sy_test (NAME,AGE) VALUES('    ',33)";
		execute(sql);
		System.out.println("   ");
	}
//execute()    ...
}

 
주의 할 점:
1  @Transactional 은 Public 방법 에 만 적 용 될 수 있 습 니 다. 다른 비 Public 방법 에 대해 서 는 @ Transactional 을 표시 해도 틀 리 지 않 지만 방법 은 사무 기능 이 없습니다.
 
2 기본 적 인 상황 에서 하나의 트 랜 잭 션 방법 이 있 습 니 다. RuntiomeException 을 만 났 습 니 다. 스크롤 백 .  마주치다 검사 이상 스크롤 백 을 못 해 요. 의. 모든 이상 을 스크롤 백 하려 면 @ Transactional (rollback For = {Exception. class, 기타 이상}) 을 추가 해 야 합 니 다.
 
 
 
@Transactional  모든 선택 가능 한 속성 은 다음 과 같 습 니 다:
 
속성
유형
기본 값
설명 하 다.
propagation
전파 매 거
REQUIRED
트 랜 잭 션 전파 속성 (아래 설명 이 있다)
isolation
isolation 매 거
DEFAULT
트 랜 잭 션 격 리 단계 (별도의 설명 이 있다)
readOnly
boolean
false
읽 기만 할 지 여부
timeout
int
-1
시간 초과 (초)
rollbackFor
Class[]
{}
스크롤 백 이 필요 한 이상 클래스
rollbackForClassName
String[]
{}
스크롤 백 이 필요 한 이상 클래스
noRollbackFor
Class[]
{}
스크롤 백 이 필요 없 는 이상 클래스
noRollbackForClassName
String[]
{}
스크롤 백 이 필요 없 는 이상 클래스
 
 
=================================================================
 
XML 설정 선언 식 사무 -- tx 네 임 스페이스
 
성명 식 사 무 를 채택 하 다. 1. 성명 식 트 랜 잭 션 설정 * SessionFactory 설정 * 트 랜 잭 션 관리자 설정 * 트 랜 잭 션 특성 * 그런 방법 들 은 사 무 를 사용한다. 2. 업무 논리 적 방법 작성 * HibernateDao Support 클래스 를 계승 하여 HibernateTemplate 를 사용 하여 지속 성 을 유지 합 니 다. HibernateTemplate 는 Hibernate session 의 패키지 입 니 다.     * 기본 스크롤 백 은 Runtime Exception (Runtime Exception 을 계승 하 는 하위 클래스 포함) 이 며, 일반 이상 스크롤 백 하지 않 습 니 다.     * 비 즈 니스 논리 방법 을 작성 할 때 이상 을 계속 위로 던 지 는 것 이 좋 습 니 다. 표현 층 에서 처리 하 는 것 이 좋 습 니 다 (struts)     * spring 의 트 랜 잭 션 은 업무 방법 에 설정 해 야 합 니 다 (트 랜 잭 션 경 계 는 Facade 클래스 로 정의). Dao 에 추가 하지 마 십시오.
자바 코드  
  •   
  •   
  •          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-2.0.xsd   
  •            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd   
  •            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">   
  •       
  •       
  •       
  •         
  •       
  •       
  •       
  •        
  •                      
  •        
  •       
  •       
  •       
  •            
  •                 
  •                 
  •                 
  •                 
  •            
  •       
  •       
  •       
  •         
  •         
  •       
  •   
  •       
  •   

  •  

    좋은 웹페이지 즐겨찾기