SSH 프레임 워 크 에서 데이터베이스 트 랜 잭 션 잠 금 대기 문제
public String someMethod(){
DefaultTransactionDefinition def=new DefaultTransactionDefinition();
TransactionStatus status=transactionManager.getTransaction(def);
try{
if(someObject==null){
//put error message in Session
this.getSession().put("errorMsg","someObject is null.");
return ERROR;
}
//update or insert or delete some date
transactionManager.commit(status);
return SUCCESS;
}catch(Exception e){
e.printStackTrace();
this.getSession().put("errorMsg", "something is wrong");
transactionManager.rollback(status);
return ERROR;
}
}
ERROR 과 SUCCESS 는 Struts 에서 성공 과 오류 정 보 를 보 여 주 는 통 일 된 페이지 를 설정 했다.상기 코드 의 문 제 는 사무 관리의 try 블록 에서 발생 합 니 다.만약 에 someObject 가 null 이면 오류 페이지 에 오류 정 보 를 알려 주 고 return ERROR 전에 rollback 이 없습니다.
return ERROR 전에 트 랜 잭 션 rollback 을 사용 하면 문 제 를 해결 할 수 있 습 니 다.
public String someMethod(){
DefaultTransactionDefinition def=new DefaultTransactionDefinition();
TransactionStatus status=transactionManager.getTransaction(def);
try{
if(someObject==null){
//put error message in Session
this.getSession().put("errorMsg","someObject is null.");
transactionManager.rollback(status);
return ERROR;
}
//update or insert or delete some date
transactionManager.commit(status);
return SUCCESS;
}catch(Exception e){
e.printStackTrace();
this.getSession().put("errorMsg", "something is wrong");
transactionManager.rollback(status);
return ERROR;
}
}
이 구체 적 인 응용 은 일부 조건 이 성립 되 지 않 는 다 고 판단 할 때 오류 알림 을 되 돌려 줍 니 다.그러나 이 때 데이터 베 이 스 는 이미 존재 합 니 다.오류 알림 을 되 돌려 줄 때 트 랜 잭 션 rollback 을 해 야 합 니 다.그렇지 않 으 면 데이터 베 이 스 는 트 랜 잭 션 상 태 를 계속 유지 하고 데이터 도 수정 과 삭 제 를 삽입 할 수 없습니다.
실제 데이터베이스 업무 의 원가 가 매우 높 기 때문에 먼저 각종 잘못된 판단 을 하고 마지막 에 업무 조작 을 하 는 것 을 권장 합 니 다.고성능,높 은 병발 과 함께 데이터 일치 성에 대한 요구 가 높 지 않 은 경우 라면 사 무 를 아예 사용 하지 않 아 도 된다.
이상 은 개인 적 인 생각 입 니 다.동생 이 웹 개발 에 막 입 문 했 습 니 다.모두 함께 교류 합 시다~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fortinet FortiWeb Web Application Firewall Policy BypassFrom: Geffrey Velasquez Date: Wed, 2 May 2012 20:33:23 -0500...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.