프로 그래 밍 트 랜 잭 션, 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 에 추가 하지 마 십시오.
자바 코드
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다른 사람의 웹사이트 편집: contenteditable 및 designMode그래도 우리가 그렇게 할 수 있다고 생각하는 것은 멋진 일입니다. 제가 강조하고 싶었던 일종의 관련 API가 실제로 몇 개 있기 때문에 오늘 그것을 가져왔습니다. contenteditable는 "true" 값이 할당...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.