2014-03-04 3 views
1

JSF 웹 응용 프로그램에서 작업 중입니다. 서비스 계층은 무 상태 세션 빈을 사용하여 개발됩니다. 이 상태없는 빈은 CDI를 사용하여 관리 Bean에 주입됩니다.무 상태 세션 빈 트랜잭션

스테이트리스 빈에서 트랜잭션을 관리하기 위해 컨테이너 관리 트랜잭션이나 빈 관리 트랜잭션을 사용할 수 있다는 것을 알고 있습니다. 또한 상태 비 저장 빈의 모든 public 메소드는 기본적으로 컨테이너 관리 트랜잭션에 있습니다.

그래서 제 질문은 다음과 같습니다

선호 무 빈에서 트랜잭션 관리를위한 접근 방법이다

- 컨테이너 관리 또는 빈 관리?

빈 관리 및 컨테이너 관리 트랜잭션 콩을 모두 서비스 계층에 두는 것이 바람직합니까?

단일 bean에서 컨테이너 관리 트랜잭션과 bean 관리 트랜잭션을 모두 사용할 수 있습니까? 가능한 경우 가능하면 좋습니까?

나에게 당신의 제안을 알려 주시기 바랍니다 ... 당신의 트랜잭션 범위가 더 서비스 계층 방법에 걸쳐하지 않는 경우

답변

2

상태없는 bean-container> managed 또는 bean managed에서 트랜잭션 관리에 선호되는 접근법은 무엇입니까?

CMT를 사용하는 것이 팁적이고 바람직한 방법입니다. 트랜잭션 관리는 앱 서버가 제공하는 유용한 서비스 중 하나이며, 개발을 간소화하므로, 시간의 방대한 시장 인이 접근 방식 (기본 접근 방식이기도 함)을 사용해야합니다.

그러나, BMT는 특별한 경우 여전히 필요하다 :

A) 성능 향상을위한 트랜잭션 경계를 줄일 필요로 할 때.

b) 상태 세션빈이 있고 여러 클라이언트 호출에서 트랜잭션을 유지해야하는 경우. (이것이 유용 할 때를보기가 어렵습니다).

빈 관리 및 컨테이너 관리 트랜잭션 콩을 서비스 계층에 둘 것을 권장합니까?

예, 위에서 설명한 특수한 재 요구가 필요한 서비스 인 경우 두 가지 빈 트랜잭션 유형을 서비스 계층의 일부로 사용할 수 있습니다.

단일 bean에서 컨테이너 관리 트랜잭션과 bean 관리 트랜잭션을 모두 사용할 수 있습니까? 가능한 경우 가능하면 좋습니까?

아니요, 불가능합니다.

0

사용 컨테이너 관리 트랜잭션 : 이상적으로는 하나의 방법에 대해 (컨테이너 트리거 커밋) 하나의 트랜잭션이 있어야합니다. 그렇지 않은 경우 빈 관리 트랜잭션이 더 실용적이어야하며 호출자가 커밋 또는 롤백시기를 결정할 수 있습니다.

관련 문제