2012-05-08 2 views
6

저는 Spring의 @Transactional 주석을 사용하기 시작했으며 트랜잭션 관리에 많은 편의를 제공합니다. 그러나이 코드를 사용하면 Spring에 의존하게됩니다. 내가 JPA 타입의 물건을 가지고 있다면 javax persistence 패키지가있다. JPA 주석이 있다면 모든 종류의 코드를 표시 할 수있다. 그러나 그것들은 모두 javax.persistence에서 왔기 때문에 코드는 특정 구현이나 ORM에 의존하지 않는다.JTA와 Spring의 차이 @ 트랜잭션 주석

제 생각에는 거래 물건에 대한 유사한 주석이있는 것 같습니다. javax jta 패키지를 찾았지만 실제로 구현할 수있는 일반적인 주석이 있는지 확신 할 수 없습니다. 기본적으로 우리가 Spring에 의존하지 않도록 트랜잭션 기능을 관리하는 메소드에 넣을 수있는 일반적인 javax와 유사한 어노테이션이 있는지 궁금합니다.

+0

사용중인 JavaEE 버전은 무엇입니까? – skaffman

+0

@skaffman Java 7이 선호되지만 Java 6가 작동합니다. – dnc253

+0

JavaEE 버전이 아니라 JavaEE 버전이라고 말했습니다. 귀하의 질문은 버전 의존성이 높은 JavaEE API의 일부에 관한 것입니다. – skaffman

답변

9

JavaEE 6에서 Spring과 같은 트랜잭션 경계 주석을 제공한다고 생각하지 않습니다. 가장 가까운 아날로그는, 본질적으로 트랜잭션 적이지만 명시 적으로 구분되지 않는 EJB 상태없는 세션 빈을 사용하는 것입니다 (누군가 틀렸다면 누군가 나를 교정하십시오).

코드를 연결할 API를 선택하는 것이 좋습니다. Spring의 @Transactional을 사용하는 이점은 사용중인 특정 트랜잭션 API (코드를 변경하지 않고 012TA은 JTA, JPA, Hibernate 또는 원시 JDBC 트랜잭션과 함께 작업 할 수 있음)와 독립적이라는 것입니다. 그러나 물론, 당신은 봄에 묶여 있습니다.

주석 스타일이 원하는 경우, JavaEE를 완전히 포용하고 EJB 3.x 스타일 주석을 사용하지 않으려면 Spring에 대한 대안이 표시되지 않습니다.

+0

알아두면 좋은 정보입니다. 감사. – dnc253

관련 문제