▩ EJB Transaction의 이해
- INSERT, DELETE, UPDATE의 경우를 트랜잭션이라고 합니다.
이런 기능들은 EJB 콤포넌트의 대상이 됩니다.
- EJB는 강력하고 안정적인 트랜잭션을 Application Server층에서 지원함으로
개발자가 전혀 트랜잭션을 구현할 필요가 없습니다.
하지만 JSP단에서는 모든 트랜잭션이 요구되는 메소드를 개발자가 파악하여
5줄 정도의 코드가 전부 추가되나 EJB에서는 그럴 필요가 없습니다.
- 일반적으로 모든 메소드를 트랜잭션 상태로 지정하며 'Requird 속성'을
이용합니다.
- Weblogic Builder상에서 'Transaction Type'을 'Bean'으로 하면 JSP와 같은
방법으로 트랜잭션을 지정하여 EJB 서버가 지원하는 트랜잭션을 제공받으려면
'Container'타입으로 지정합니다.(권장)
▩ 트랜잭션 속성
1. Not Supported 속성
- 트랜잭션을 사용하지 않습니다.
2. Supports 속성
- 메소드가 2개 있을 경우 1번째 메소드가 트랜잭션 상태이면 2번째 호출되는
관련 메소드도 트랜잭션 상태로 진입합니다.
메소드1이 트랜잭션 상태가 아니면 트랜잭션이 적용되지 않습니다.
EJB Method1 ---> EJB Method2
Transaction Transaction 진입
EJB Method1 ---> EJB Method2
Not Transaction Transaction 진입 안함
3. Requird 속성(권장)
- 무조건 모든 EJB메소드를 트랜잭션 상태로 진입 시킵니다.
- 메소드1이 트랜잭션 상태가 아니면 트랜잭션을 생성해서 실행합니다.
EJB Method1 ---> EJB Method2
Transaction Transaction 진입
EJB Method1 ---> EJB Method2
Not Transaction Transaction 진입
4. Requires New
- 호출되는 관련 메소드가 전부 새로운 트랜잭션을 생성합니다.
메소드마다 독립적으로 트랜잭션을 지정하는 것으로 많이 사용되지 않습니다.
많은 부하가 발생합니다.
▩ 트랜잭션 구현 방법
1. 모든 메소드를 트랜잭션을 적용하는 경우
- Weblogic Builder가 자동으로 생성하는 스크립트, 'META-INF/ejb-jar.xml'
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>MemberEJB</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
2. 모든 메소드를 트랜잭션을 적용하면 SELECT만 하는 메소드도 트랜잭션 상태에 진입
함으로 이런 경우는 트랜잭션과 관련있는 메소드(INSERT, DELETE, UPDATE)만
명시합니다.
- Weblogic Builder가 자동으로 생성하는 스크립트 'META-INF/ejb-jar.xml'를
수정합니다.
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>MemberEJB</ejb-name>
<method-name>method-name1</method-name>
<method-name>method-name2</method-name>
<method-name>method-name3</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
'Programming > JAVA' 카테고리의 다른 글
JSP로 이미지 생성하기 (0) | 2008.04.28 |
---|---|
JNDI(Java Naming and Directory Interface)의 이해 (0) | 2008.04.28 |
java에서 Excel Read/Write (0) | 2008.04.28 |
자바 프로그램에 대한 표준 exe 만들기 (0) | 2008.04.28 |
메모리 누수, 사라져라 - Memory Leaks, Be Gone (0) | 2008.04.28 |