JavaEE 의 사무
2. 로 컬 트 랜 잭 션 과 분포 식 트 랜 잭 션 JOTM
3. 프로 그래 밍 모델 4. 선고 식 모델 4.1 사무 유형 4.2 트 랜 잭 션 격 리 단계 4.3 Rollback 에 대하 여 4.4 Spring 에 대하 여
jdbc 를 수 동 으로 호출 하 는 connection 트 랜 잭 션 방법 과 JTA 인 터 페 이 스 를 사용 하 는 것 은 모두 프로 그래 밍 개발 에 속 하 며 EJB 에 서 는 BMT (Bean 관리 트 랜 잭 션) 라 고 합 니 다. JTA 의 가장 중요 한 인 터 페 이 스 는 바로 UserTransaction 과 그 여섯 가지 방법 - begin, commt, rollbback, getStatus, setRollbackolly, setTransactionTimeout 이다. 프로그램 이 UserTransaction 이 필요 할 때 JNDI 에서 받 을 수 있 지만 JNDI 이름 은 응용 서버 에 따라 다 릅 니 다.EJB 3 에 서 는 @ Resource 로 직접 주입 할 수 있 습 니 다.
앞 에는 모두 깔개 가 깔 려 있 는데 이것 이 야 말로 EJB 의 CMT (용기 관리 사무) 와 Sprin 등 주요 사무 모델 이다.
그 중에서 EJB 2.0, Spring 1.0 은 배치 설명자 와 applicationContext. xml 에서 정의 되 고 EJB 3.0 과 Spring 2.0 은 annotation 을 사용한다.
JavaEE 와 Spring 의 정 의 는 기본적으로 같 습 니 다.
EJB 에 서 는 rollback 이 session Context. setRollbackOnly () 만 있 거나 EJBException 을 던 질 수 있 습 니 다. (EJB 3 는 annotation 에서 사용자 정의 Exception 을 설정 하면 rollback 을 실행 할 수 있 습 니 다)
Spring 에 서 는 rollback unchecked exception (Runtime Exction 및 하위 클래스) 만 있 을 뿐, checked exception (Exception 및 하위 클래스) 은 특별히 밝 히 지 않 는 한 rollback 이 되 지 않 습 니 다.
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW,rollbackFor = {MyException1.class,MyException2.class})
따라서 모든 서비스 계층 방법 에서 throws 로 정 의 된 Exception 은 트 랜 잭 션 정의 에서 rollback 설정 을 해 야 합 니 다. (잊 지 마 십시오)
service 계층 방법 에서 c 가 atch 에 의 해 처 리 된 이상, 용기 가 rollback 을 보조 하 기 를 원한 다 면 미리 정 의 된 Runtime Exception 의 하위 클래스 를 다시 던 져 야 합 니 다. (되 돌아 보지 마 십시오)
Spring 은 프로 그래 밍 식 사무 관 리 를 원 하지 않 습 니 다. Spring 도 EJB CMT - CMT 를 사용 하 는 것 을 원 하지 않 습 니 다. EJB 에 의존 하여 POJO 에 사용 할 수 없습니다. JTA 의 전체적인 업무 에 의존 하여 단일 데이터 소스 장면 에 낭 비 를 초래 하고 rollback 체제 가 비교적 번 거 롭 습 니 다 (EJBException 또는 수공 setRollback Only ()). 따라서 Spring 은 AOP 를 통 해 POJO 에 대한 전체 선언 식 사무 체 계 를 실 현 했 고 jdbc, hibenate, jpa, jms 등 local 데이터 소스 와 JTA 에 대해 통 일 된 사무 관리 체 제 를 실 현 했 으 며 로 컬 자원 과 JTA 가 프로필 급 전환 을 지원 하고 rollback 체 제 를 개선 했다.
1) 로 컬 트 랜 잭 션 관리자:
<bean class="code-quote" id="&lt;span"></bean>"transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property class="code-quote" name="&lt;span">"entityManagerFactory" ref="entityManagerFactory" />
</property>
2) Spring 은 요청 을 모두 애플 리 케 이 션 서버 의 JTA 대상 에 전달 합 니 다. (이때 데이터 원본 도 JNDI 로 애플 리 케 이 션 서버 에서 가 져 오 는 것 으로 바 꿔 야 합 니 다.)
<bean class="code-quote" id="&lt;span"></bean>"myTxManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
3) 서버 전용 유형의 JTA 사무 관리자 적용:
<bean class="code-quote" id="&lt;span"></bean>"myTxManager" class="org.springframework.transaction.jta.WebLogicJtaTransactionManager"/>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.