2010-04-14 5 views
1

내 코드에서 두 테이블을 차례로 업데이트하고 있습니다.트랜잭션 관리

업데이트 (table1_details);

업데이트 (table2_details);

따라서 table1에서 업데이트가 실패하면 table2를 업데이트하거나 롤백해야합니다.

이 상황을 처리하는 방법. 나는 거래를 사용해야한다는 것을 안다. 코드로 도움을 줄 수 있습니까? 봄과 최대 절전 모드로 Java를 사용하고 있습니다.

+1

어디에 문제가 있습니까? 온라인 문서를 읽을 수 없습니까? 예를 들면 다음과 같습니다. http://static.springsource.org/spring/docs/2.5.x/reference/transaction.html ('spring hibernate transaction'검색에 대한 첫 번째 Google 응답)! – Thierry

답변

0

나는 올바른 API를 호출 할 수 있지만,이 같은 일이 :

Transaction tx = em.getTransaction(); 

    tx.begin(); 
    try { 
     update1(); update2(); 
    } 
    catch(Exception e) { 
     failed = true 
    } 
    finally { 
     if(!failed) tx.commit(); 
     else tx.rollbacl(); 
    } 
2

문제는 조금 넓은이며,이를 구현하는 방법에는 여러 가지가 있지만 나는 것 :

  • 사용 Hibernate SessionFactory을 DAO 객체에 삽입하기위한 Spring.
  • Spring을 사용하여 서비스 객체에 DAO를 삽입하고 비즈니스 메소드 내에서 호출하십시오.
  • 비즈니스 메소드 레벨 (Spring AOP 또는 @Transactional)에서 Spring 선언적 트랜잭션 관리를 사용하십시오. 이 같은

뭔가 :

@Transactional 
public void doSomething() { 
    dao1.foo(); 
    dao2.bar(); 
} 

구성에 대한 자세한 내용은, 봄 문서의 Chapter 9. Transaction management 확인합니다.

관련 문제