우리는 JBoss 4.2.3에서 Spring & Hibernate를 사용하고 있으며 외부 시스템을 호출하고 있습니다. 요청을 처리하는 과정에서 다소 시간이 걸릴 수 있습니다. 오래 지속되는 데이터베이스 잠금을 제거하기 위해 외부 호출이 반환 될 때까지 데이터베이스에 쓰지 않습니다. 그러나 Hibernate는 트랜잭션이 없다는 것을 좋아하지 않으므로 우리는 (새로운 읽기 - 쓰기 서브 트랜잭션에서) 쓰기를 수행 할 때까지 Spring에 의해 시작된 읽기 전용 트랜잭션을 갖습니다. 불행히도 이것은 여전히 우리가 외부 호출, 수영장에서 할당 된 연결 중에 자원을 유지하고 있음을 의미합니다. 나머지 실행 (이전 및 이후)이 필요할 때 진행중인 트랜잭션없이 외부 호출을 수행하는 방법이 있습니까? 실제로 트랜잭션이 필요하고 최대 절전 모드를 계속 유지할 때까지는 실제 트랜잭션을 연기하는 더 좋은 방법이 있습니까?진행중인 트랜잭션없이 외부 전화를 걸려면 어떻게해야합니까?
1
A
답변
0
퍼시스턴스 계층에서 외부 시스템을 호출해야합니까? 당신이 끈기를 유지하기 전에, 이런 종류의 일을하는 것이 더 논리적으로 보입니다.
+0
호출 자체는 우리의 영속성 계층에서 온 것이 아니지만, 외부 호출 계층에서 읽어야 할 것들이 있습니다. 그리고 그 중 일부에 대해서는 (그리고 Hibernate가 트랜잭션/세션에 대해 까다로워 질 때) 게으른 로딩을 사용하고자합니다. – Mirvnillith
0
실제로 트랜잭션을 읽을 필요가 없습니다. 여기
이 읽기 호출이 바로 DAO 객체로 이동하는 예이지만, 쓰기 호출 (Spring의 TransactionTemplate의 도우미 개체 사용) 트랜잭션 내에서 수행됩니다public ContainerType getContainerType(Long id) {
return this.containerTypeDao.getContainerType(id);
}
public Long saveContainerType(final ContainerType containerType) {
return (Long) this.transactionTemplate.execute(new TransactionCallback() {
public Long doInTransaction(TransactionStatus status) {
try {
return containerTypeDao.saveContainerType(containerType);
}
catch (Exception e) {
status.setRollbackOnly();
return null;
}
}
});
}
관련 문제
- 1. Python을 사용하여 전화를 걸려면 어떻게해야합니까?
- 2. SMS를 차단하고 전화를 걸려면 어떻게해야합니까?
- 3. 겹치지 않는 간격으로 Ajax 전화를 걸려면 어떻게합니까?
- 4. HttpClient를 사용하여 WebDav 전화를 걸려면 어떻게합니까?
- 5. iPhone Dev - 앱 내에서 전화 번호로 전화를 걸려면 어떻게해야합니까? 또한 앱에서 어떻게 전화를 끊을 수 있습니까?
- 6. 아이폰이 특정 임계 값으로 흔들릴 때 전화를 걸려면 어떻게해야하나요?
- 7. iPhone : 내 응용 프로그램을 종료하지 않고 전화 번호로 전화를 걸려면 어떻게해야합니까?
- 8. 진행중인 오디오 작업을 계속 진행하려면 어떻게해야합니까?
- 9. UITextField에서 전화를 걸 때
- 10. 진행중인 알림
- 11. adhearsion을 사용하여 전화를 걸었습니다.
- 12. 주석 처리 된 REQUIRES_NEW 메소드가 트랜잭션없이 실행됩니까?
- 13. 트랜잭션없이 MongoDB에서 many to many를 업데이트합니다.
- 14. iPhone에서 전화를 걸 때 경보를 울리려면 어떻게합니까?
- 15. 진행중인 메시지를 창에 표시
- 16. 진행중인 Ajax 요청 jQuery
- 17. '진행중인 SVG 조작 UIWebview
- 18. 진행중인 .net 프로세스 디버그
- 19. 외부 파일에서 Javascript를로드하려면 어떻게해야합니까?
- 20. 진행중인 실행 취소/다시 실행 작업을 취소하려면 어떻게해야합니까?
- 21. Android에서 HTML로 전화를 걸 수 있습니까?
- 22. WCF 서비스의 프로세스 외부 인스턴스를 시작하려면 어떻게해야합니까?
- 23. iPhone의 웹 응용 프로그램에서 전화를 시작하는 방법
- 24. ASP.NET에서 진행중인 데이터를 어떻게 처리합니까?
- 25. 사용자가 NSIS에서 진행중인 설치를 취소하게합니다
- 26. Linux에서 진행중인 Node.js 서버 종료
- 27. TweenMax 변경 진행중인 베 지어
- 28. Django 업로드가 진행중인 사용자 표시
- 29. .NET4 : 진행중인 단계별 실행 설명
- 30. CruiseControl.Net - 진행중인 빌드의 보고서/로그보기
하면 기다리는 요청해야합니까 마무리를위한 외부 통화? 아니면 외부 호출과 데이터베이스 쓰기가 비동기 적으로 일어날 수 있습니까? – sourcedelica
예, 외부 통화가 필요한지 여부와 통화 설정 (예 : URL)을 확인하려면 Google 데이터베이스를 확인해야합니다. 또한 발신자에게 회신하기 전에 로컬 데이터베이스에 응답 할 필요가 있습니다. – Mirvnillith