Spring 관리 업무 의 몇 가지 방식
1. 업무 의 네 가지 특성:
원자 성: 하나의 업무 에서 데이터 베 이 스 를 조작 하 는 것 은 분리 할 수 없 는 작업 서열 입 니 다. 모두 하거나 모두 합 니 다.
일치 성: 데이터 가 업무 수행 으로 인해 파괴 되 지 않 습 니 다.
격 리 성: 다른 트 랜 잭 션 (프로 세 스) 의 방 해 를 받 지 않 는 트 랜 잭 션 의 실행.동시에 실 행 된 사무 간 에는 서로 간섭 하지 않 는 다.
지속 성: 하나의 업무 가 제출 되면 데이터베이스 에 대한 변 화 는 영구적 입 니 다.
2. 업무 의 실현 방식:
실현 방식 은 모두 두 가지 가 있다. 인 코딩 방식, 성명 식 사무 관리 방식 이다.
AOP 기술 을 바탕 으로 이 루어 진 성명 식 사무 관 리 는 실질 적 으로 방법 집행 전후 에 차단 한 다음 에 목표 방법 이 시작 되 기 전에 사 무 를 만 들 고 가입 하 며 목표 방법 을 실행 한 후에 집행 상황 에 따라 제출 하거나 스크롤 백 하 는 것 이다.
성명 식 사무 관 리 는 두 가지 방식 이 있 습 니 다. XML 프로필 을 기반 으로 하 는 방식 입 니 다.다른 하 나 는 업무 방법 에 있어 서 @ Transactional 주 해 를 하고 업무 규칙 을 업무 논리 에 적용 하 는 것 입 니 다 (일반적으로 service 층 으로 정 합 니 다).
첫 번 째 종류:
설명 설정 을 사용 하여 spring. xml 파일 에 다음 두 줄 의 코드 를 추가 합 니 다.
<!-- annotation -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
OK, 설정 이 완료 되 었 습 니 다. 다음 에 업무 가 필요 한 방법 이나 클래스 에서 만 업 무 를 정의 하면 됩 니 다.
< tx: annotation - driven > 이 설정 은 spring 에 게 용기 의 모든 클래스 차원 이나 방법 차원 에서 주 해 를 설정 하 는 것 을 알려 줍 니 다.
두 번 째:
Aop 과 Tx 를 사용 하 는 방식 입 니 다.
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="merge*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="put*" propagation="REQUIRED" />
<tx:method name="use*" propagation="REQUIRED"/>
<!--hibernate4 getCurrentSession() -->
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="count*" propagation="REQUIRED" read-only="true" />
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="list*" propagation="REQUIRED" read-only="true" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config expose-proxy="true">
<!-- -->
<aop:pointcut id="txPointcut" expression="execution(* cn.javass..service..*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</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에 따라 라이센스가 부여됩니다.