2014-10-12 6 views
0

저는 은행 계좌 신청서를 작성 중이며 계좌 이체 거래를 처리하기위한 더 나은 방법을 결정할 수 없습니다. SQL을 사용하면 데이터베이스가 변경된 경우 코드 재 작성이 필요할 수 있습니다. pure Java를 사용하면 트랜잭션에 대한 계정을 잠글 때 조금 더 복잡해집니다. 이 시나리오에서 가장 좋은 방법은 무엇입니까?
PS -이 경우에는 분산 응용 프로그램 서버를 고려하십시오.은행 응용 프로그램의 SQL 트랜잭션 또는 Java 측 트랜잭션 중 어느 것이 더 낫습니까?

+0

"더 나은"방법? 공연? 유지 관리 가능성? 신뢰할 수 있음? –

+0

순수 자바 사용 : 그 의미는 무엇입니까? Java는 데이터베이스가 아닙니다. 그것은 아무것도 유지하지 않습니다. JDBC를 사용하여 트랜잭션을 시작/커밋하는 것은 SQL을 사용하여 트랜잭션을 시작/커밋하는 것과 같습니다. –

+0

자바 코드 - 비즈니스 로직에서 트랜잭션을 의미합니다. –

답변

1

하드 크래시시 DB를 거의 일치하지 않는 상태로 만드는 모든 응용 프로그램은 은행 업무에 적합하지 않습니다. 소위 "Java 트랜잭션"을 활용하는 응용 프로그램은이 그룹의 일부입니다.

심각한 뱅킹 응용 프로그램은 모든 쓰기 프로세스를 서버 쪽 캡슐 (읽기 : 저장 프로 시저)에 캡슐화하고 테이블에 대한 쓰기 액세스를 허용하지 않습니다. 읽기 액세스는 저장 프로 시저와 뷰가 혼합되어 제공됩니다.

내결함성 RDBMS와 함께 작업의 완전 또는 전혀 처리를 보장합니다.

1

모든 참여 자원 (데이터베이스와 기타 엔드 포인트 또는 미들웨어 포함)은 동일한 트랜잭션에 참여해야합니다. 트랜잭션은 구성 요소의 경계에서 종료되는 것이 아니며 시스템의 관련된 모든 구성 요소에 걸쳐 있습니다. 그렇지 않으면 트랜잭션이 아닙니다. 일반적으로 자신의 코드 또는 일부 미들웨어 인 구동 구성 요소가 있어야 트랜잭션을 시작하고 커밋하거나 롤백합니다. 다른 사람이 참여합니다. 트랜잭션에 대한 아이디어는 무언가가 실패하면 관련된 모든 구성 요소의 동작을 되돌리고 (성공적으로 커밋 될 때까지 트랜잭션 외부의 다른 사람에게 이미 발생한 동작을 숨기는 것입니다). 내 대답은 : 트랜잭션이 모든 참여 구성 요소를 포함하기 때문에 데이터베이스 및 응용 프로그램 수준 트랜잭션이 모두 필요합니다.