Fabriqué en France Drapeau français

spring 트랜잭션 예제

Spring 선언적 트랜잭션 관리는 가로세로 지향프로그래밍을 사용하여 느슨한 커플링을 달성하고 응용 프로그램에서 보일러 플레이트 코드를 방지하여 이러한 문제를 해결합니다. 봄이 간단한 예제로 어떻게 하는지 살펴보겠습니다. 이 경우 TransactionalService의 두 가지 메서드는 « 주문 » 및 « 계정 » 한정자로 구분되는 별도의 트랜잭션 관리자에서 실행됩니다. 기본 대상 bean 이름 트랜잭션 관리자는 특별히 정규화된 PlatformTransactionManager bean이 발견되지 않은 경우에도 계속 사용됩니다. 트랜잭션 관리자는 두 가지 질문에 대한 답을 제공해야 합니다: @Transactionalmechanism 움직이는 부분이 무엇인지 알고 이 작업을 만드는 데 필요한 일반적인 Spring 구성을 살펴보겠습니다. EJB 컨테이너 기본 동작이 시스템 예외(일반적으로 런타임 예외)에서 트랜잭션을 자동으로 롤백하지만 EJB CMT는 응용 프로그램 예외(즉, 확인된 예외 이외의 검사된 예외)에서 트랜잭션을 자동으로 롤백하지 않습니다. java.rmi.RemoteException). 선언적 트랜잭션 관리를 위한 Spring 기본 동작은 EJB 규칙을 따릅니다(롤백은 선택되지 않은 예외에 대해서만 자동) 이 동작을 사용자 지정하는 것이 유용한 경우가 많습니다. 인터페이스 정의, 인터페이스의 메서드, 클래스 정의 또는 클래스의 공용 메서드 앞에 @Transactional 개의 추가를 배치할 수 있습니다. 그러나 @Transactional 개의 추가 된 단순한 존재는 트랜잭션 동작을 활성화 하기에 충분 하지 않습니다. @Transactional 어노미는 @Transactional 인식되고 메타데이터를 사용하여 트랜잭션 동작으로 적절한 빈을 구성할 수 있는 일부 런타임 인프라에서 사용할 수 있는 메타데이터입니다.

앞의 예제에서 요소는 트랜잭션 동작을 전환합니다. 이것은 JDBC와 봄 거래 관리 예제의 예입니다. 롤백 규칙의 개념은 중요한 데, 이를 통해 자동 롤백을 야기할 예외(및 throwables)를 지정할 수 있습니다. Java 코드가 아닌 구성에서 선언적으로 지정합니다. 따라서 트랜잭션 Status 개체에서 setRollbackOnly()를 호출하여 현재 트랜잭션을 롤백할 수 있지만 대부분의 경우 MyApplicationException에서 항상 롤백이 발생해야 하는 규칙을 지정할 수 있습니다. 이 옵션의 가장 큰 장점은 비즈니스 개체가 트랜잭션 인프라에 의존하지 않는다는 것입니다. 예를 들어 일반적으로 스프링 트랜잭션 API 또는 기타 스프링 API를 가져올 필요가 없습니다. 예제를 시작하기 전에 사용한 도구에 대해 조금 살펴보겠습니다.

스프링 프레임워크의 선언적 트랜잭션 관리는 트랜잭션 동작(또는 부족)을 개별 메서드 수준으로 지정할 수 있다는 점에서 EJB CMT와 유사합니다. 필요한 경우 트랜잭션 컨텍스트 내에서 setRollbackOnly() 호출을 만들 수 있습니다. 두 가지 유형의 트랜잭션 관리 간의 차이점은 스프링 프레임워크는 프로그래밍 방식의 트랜잭션 관리의 두 가지 수단을 제공합니다. 이 경우 응용 프로그램 코드가 최대 절전 모드 세션 인스턴스를 가져오는 데 사용할 최대 절전 모드 LocalSessionFactoryBean을 정의해야 합니다.

MENU