0
다음 DAO를 사용하여 여러 DAO를 사용하여 다음과 같은 작업 단위를 수행하는 서비스가 있습니다. DAO는 세션을 만들고 커밋하여 데이터/저장을 가져옵니다. 이 경우 왜 DAO가 세션을 자체적으로 관리 할 때 서비스에 트랜잭션이 필요합니까? 두 번째 DAO에서 문제가 발생하면 첫 번째 DAO의 데이터가 이미 커밋 된 상태에서이 상황을 어떻게 해결할 수 있습니까?서비스에서 @Transactional을 사용하는 적절한 방법
@Transactional
public boolean testService(SomeObject obj){
userDao.save(obj.getUser()); // this dao gets the session from sessino factory and commits there itself.
addressDao.save(obj.getAddress()); // something fails here, and the above line has already commited the data, so the data is not Atomic.
return true;
}
그래서 단일 트랜잭션이 여러 세션에 걸쳐있을 수 있다고 말하고 있습니까? – Zeus
userDao와 addressDao가 동일한 세션을 사용한다고 가정합니다. 그렇지 않다면 이유가 있습니까? (보통 모든 DAO에 대해 동일한 세션을 사용하기 때문에) – TheEwook
DAO간에 세션을 공유하는 방법을 설명 할 수 있다면 내 시스템 설계 방법을 변경하려고합니다. 그러면 도움이 될 것입니다. Thanks – Zeus