spring 사 무 를 깊이 이해 하 다.
하나의 일 은 동시에 성공 하거나 동시에 실패 합 니 다.
특성
4.567917.Atomic 원자 성 사 무 는 하나 이상 의 활동 으로 구 성 된 작업 단원 이다.원자 성 확보 사무 중의 모든 조작 이 발생 하거나 발생 하지 않 습 니 다4.567917.Consistent 일치 성 이 업무 가 완성 되면 시스템 은 모델 링 된 업무 가 일치 하 는 상태 에 있 는 지 확인 해 야 한다
트 랜 잭 션 은 읽 기 동작 만 수행 합 니 다.
readOnly=true 는 spring 에 게 현재 사 무 는 읽 기 작업 만 하고 수정 작업 을 하지 않 으 며 데이터베이스 엔진 최적화 에 도움 을 줄 수 있 음 을 알려 줍 니 다.
주:읽 기 전용 으로 설정 하면 트 랜 잭 션 에서 데 이 터 를 수정 하지 마 십시오.읽 기 전용 작업 을 사용 할 때 spring 은 잠 금 처 리 를 하지 않 습 니 다.데 이 터 를 수정 하면 문제 가 발생 할 수 있 습 니 다.
트 랜 잭 션 시간 초과
트 랜 잭 션 시간 이 길 면 스크롤 백 합 니 다.
스크롤 백 규칙
rollback-for 는 검사 형 이상 에 대해 제출 하지 않 고 스크롤 백 해 야 한 다 는 것 을 말 합 니 다.(기본 spring 은 모든 실행 시 이상 스크롤 백 합 니 다)
no-rollback-for 는 이상 한 작업 을 계속 실행 하고 스크롤 백 하지 않 는 것 을 말 합 니 다.
사무 적 사용
create table user(
id int primary key AUTO_INCREMENT,
name varchar(20) not null,
account double
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into user (name,account) values(' ',1000);
insert into user (name,account) values(' ',1000);
<!-- -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.29.RELEASE</version>
</dependency>
<!-- -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.29.RELEASE</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
주 해 를 사용 하 다여기 서 사용 하 는 것 은 spring 의 데이터 원본 입 니 다.
<!-- -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
<!-- -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- -->
<tx:annotation-driven transaction-manager="transactionManager"/>
물론 사용 한 주해 이기 때문에 구성 요소 스 캔 을 잊 지 마 세 요.
<context:component-scan base-package="com.zhanghe.study.spring4.beans.tx"/>
이후 트 랜 잭 션 을 보장 하 는 방법 에@Transactional 을 설정 하고 이 설명 에 해당 하 는 트 랜 잭 션 격 리 단계(isolation),트 랜 잭 션 전파 행위(propagation),이상 실행 스크롤 백(rollback For)을 설정 할 수 있 습 니 다.XML 사용
<!-- -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
<!-- -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- xml -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- -->
<tx:method name="get*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="save*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- , -->
<aop:config>
<aop:pointcut id="pointCut" expression="execution(* com.zhanghe.study.spring4.beans.tx.UserService.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut"/>
</aop:config>
스프링 사무 에 대한 깊이 있 는 이해 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.스프링 사무 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보시 기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.