JavaEE 의 사무

1. 자료
  • 《Java Transaction Design Strategies》   InfoQ minibook, 최고의 전자 문서, 자바 사 무 는 어 리 석 은 상태 에서 반드시 읽 어야 합 니 다.
  • 'Expert One on one J2EE Development Without EJB 중국어 버 전' 과 Spring 참조 매 뉴 얼 중국어 버 전   의 관련 장 에 서 는 Spring guys 의 의견 을 볼 수 있다.

  • 2. 로 컬 트 랜 잭 션 과 분포 식 트 랜 잭 션 JOTM
  • 로 컬 사 무 는 DB, JMS 자체 에 전적으로 의존 합 니 다. 예 를 들 어 jdbc 의 conn. comit () 를 직접 호출 합 니 다.서버 에 아무 일 도 적용 되 지 않 았 기 때문에 다 중 데이터 원본 의 전역 사무 도 지원 되 지 않 습 니 다.
  • 분포 식 사 무 는 자바 세계 의 사 무 는 JTA, JTS 규범 과 XA Sources 에서 이 루어 진다.JTA 는 사용자 프로 그래 밍 인터페이스 이 고 JTS 는 서버 바 텀 서비스 로 이들 은 보통 응용 서버 에서 자체 적 으로 이 루어 지 며 전체 8201 ℃ 와 JBoss Transaction 은 전문 적 으로 국 가 를 빼 앗 는 장 사 를 하 는 것 이다.XA Sources 는 사실 자바 EE 보다 먼저 존재 합 니 다. JDBC driver 는 자바 x. sql. XADataSource 인터페이스 의 실현 류 가 있어 야 합 니 다. 그렇지 않 으 면 2 단계 제출 이 의사 능력 입 니 다.자바 이 는 JDBC 와 JMS 외 에 도 JCA 모델 을 도입 했다.JCA 는 현재 유일 하 게 이식 가능 한 자바 이 트 랜 잭 션 을 삽입 하 는 자원 모델 이 라 고 할 수 있 기 때문에 JDO 와 같은 프레임 워 크 / server 는 자신의 JCA 커 넥 터 를 순 순 히 꺼 내 자바 이 트 랜 잭 션 에 참여 하 는 것 이다.

  • 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 의 정 의 는 기본적으로 같 습 니 다.
  • Required: Context 에 업무 가 있 으 면 가입 하고 없 으 면 스스로 만 듭 니 다.(가장 많이 사용 되 는 설정)
  • Mandatory: 영원히 하나의 업무 에 가입 합 니 다.현재 Context 에 업무 가 없 으 면 이상 을 던 집 니 다.(롤 백 업 무 를 스스로 맡 지 않 으 려 는 방법 은 반드시 다른 사람의 업무 에 가입 하고 다른 사람 이 롤 백 을 통제 해 야 한다)
  • Requires New: 영원히 새 사무 입 니 다.(다른 사람 이 어떻게 하든지 간 에 자신 이 반드시 사 무 를 제출 해 야 하 는 방법, 예 를 들 어 회계 감사 정 보 는 반드시 써 야 한다)
  • Supports: 일이 있 으 면 가입 하고 없 으 면 그만 두 세 요.새 사 무 를 만 들 지 않 습 니 다.(일반적으로 읽 기 전용 방법 으로 사 무 를 주동 적 으로 만 들 지 는 않 지만 현재 업무 가 있 으 면 가입 하여 업무 에 제출 되 지 않 은 데 이 터 를 읽 습 니 다)
  • NotSupported: 업 무 를 영원히 사용 하지 않 습 니 다. 현재 업무 가 있 으 면 업 무 를 중단 합 니 다.(이상 을 던 질 수 있 지만 전체 국면 에 영향 을 주지 않 는 방법)
  • Never: 현재 업무 가 있 는 상황 에서 이 방법 을 호출 할 수 없습니다.(낯 선 사람 은 가까이 하지 마라?)
  •       이 를 통 해 알 수 있 듯 이 Required 는 기본 설정 이 고 Supports 는 읽 기 전용 방법의 가장 좋 은 선택 입 니 다.
  • ReadUncommitted: 이 사 무 는 제출 되 지 않 은 다른 데 이 터 를 볼 수 있 습 니 다. 더러 운 읽 기.
  • ReadCommitted: 이 사 무 는 다른 업무 가 제출 한 데이터 만 볼 수 있 습 니 다. 중복 읽 을 수 없습니다.
  • RepeatableRead: 중복 읽 을 수 있 습 니 다. 한 사무 에서 처음 읽 은 데 이 터 는 본 사무 가 제출 되 기 전에 다른 사무 가 데 이 터 를 어떻게 제출 하 든 본 사무 가 읽 은 데 이 터 는 변 하지 않 습 니 다.
  • Serializable: 직렬 화, 동시에 하나의 사무 만 같은 데 이 터 를 읽 을 수 있 습 니 다.
  •     등급 이 낮 을 수록 보안 효율 도 낮 습 니 다. 격 리 단 계 는 관련 자원 지원 이 필요 합 니 다. Oracle 에서 반복 적 으로 읽 으 면 ReadCommitted 로 강 등 됩 니 다. Spring 에 서 는 기본 Default 등급 이 데이터 원본 의 눈 치 를 완전히 볼 수 있 습 니 다.
        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="&amp;lt;span"></bean>"transactionManager"
      class="org.springframework.orm.jpa.JpaTransactionManager">
      <property class="code-quote" name="&amp;lt;span">"entityManagerFactory" ref="entityManagerFactory" />
     </property>


       2) Spring 은 요청 을 모두 애플 리 케 이 션 서버 의 JTA 대상 에 전달 합 니 다. (이때 데이터 원본 도 JNDI 로 애플 리 케 이 션 서버 에서 가 져 오 는 것 으로 바 꿔 야 합 니 다.)
    <bean class="code-quote" id="&amp;lt;span"></bean>"myTxManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>


       3) 서버 전용 유형의 JTA 사무 관리자 적용:
    <bean class="code-quote" id="&amp;lt;span"></bean>"myTxManager" class="org.springframework.transaction.jta.WebLogicJtaTransactionManager"/>

    좋은 웹페이지 즐겨찾기