2013-10-09 3 views
0

이 Hibernate 샘플에 대해 질문이 있습니다. JPA로 Hibernate 문서 또는 Manning Persistence에서 응답을 찾지 못했습니다. 일반 JDBC를 사용할 때 누군가가 어떻게되는지 설명 할 수 있습니다.트랜잭션 롤백시 예외가 발생했습니다.

Session session = null; 
Transaction tx = null; 
try { 
    session = sessionFactory.openSession(); 
    tx = session.beginTransaction(); 

    // Transaction actions 

    tx.commit(); 
} 
catch (RuntimeException ex) { 
    try { 
     tx.rollback(); 
    } 
    catch (RuntimeException rbEx) { 
     log.error("Couldn’t roll back transaction", rbEx); 
    } 
    throw ex; 
} 
finally { 
    session.close(); 
} 

제 질문은 트랜잭션 롤백 메소드가 예외를 throw하면 어떻게됩니까? 일부 거래 데이터가 데이터베이스에 저장됩니까? 이 예외는 어떻게 처리 할 수 ​​있습니까?

+0

는 잘 모르겠어요하지만 당신은 다음 세션을 재개하지 않고와/일부 데이터를 가져 오기 위해 시도 롤백하지 않습니다 커밋하기 전에 예외를 발생, 일부 modificatins을 할 수 있습니다. 세션을 다시 열면 수정 사항을 볼 수 없습니다. – smajlo

답변

1

제 질문은 트랜잭션 롤백 메서드가 예외를 throw하면 어떻게됩니까?

예외 상황에 따라 다릅니다.

일부 트랜잭션 데이터가 데이터베이스에 저장됩니까?

미정. 하나는 데이터베이스 트랜잭션의 시작에 해당하는 지점으로 복구 할 수 있습니다 희망 것. 그러나 심지어 가능하지 않을 수도있는 시나리오가 있습니다. 예 : 디스크 드라이브를 분실 한 경우에도 대기 상태가 아닙니다.

어떻게이 예외를 처리 할 수 ​​

?

일반적으로 할 수 없습니다. 당신은 예외가없고 그것이 무엇을 의미하는지 아이디어 나 무엇 원인이없는 경우 (일반적인 데이터베이스 응용 프로그램에서) 할 수있는 유일한 합리적인 것은 아래로 응용 프로그램을 종료하고 문제를 조사하기 위해 사람을 얻는 것입니다.

관련 문제