2011-10-05 2 views
7

비 데이터베이스 작업을 트랜잭션으로 캡슐화하는 방법은 무엇입니까?비 데이터베이스 응용 프로그램 트랜잭션

예를 들어, 몇 가지 메소드/함수가 순차적으로 호출되고, 일부는 데이터베이스를 업데이트하고, 일부는 파일 시스템의 파일을 업데이트하고, HttpSession의 일부 업데이트 매개 변수는 일부 캐시를 업데이트합니다. 후자의 것들은 세션을 업데이트하는 것과 같이 실패합니다. 어떻게 파일 시스템, DB 등의 다른 모든 변경 사항을 롤백 할 수 있습니까?

환경은 Struts2, 어떤 RDBMS, 최대 절전 모드 또는 iBatis를 같은 지속성 계층과 같은 뭔가 톰캣 같은 자바 서블릿 컨테이너 등이다

답변

2

모든 이들은 2에 참여할 수 트랜잭션 자원이되어야 할것 phase-commit 커밋 프로토콜을 사용하여 원하는 것을 수행 할 수 있습니다.

코드에 버그가 없으면 세션 업데이트가 실패하지 않아야합니다. 따라서 다른 업데이트가 성공한 후에 수행 할 수 있습니다. 트랜잭션 시스템이 필요한 경우 파일 시스템을 피해야합니다. 다른 방법으로는 파일 시스템에 저장 한 다음 데이터베이스 업데이트를 수행하고 DB 업데이트가 실패 할 경우 파일 시스템에 쓸모없는 파일을 포함하도록 허용하는 것부터 시작할 수 있습니다.

관련 문제