webapp을 디버깅하고 있습니다. 시작할 때 DataSourceTransactionManager 빈과 HibernateTransactionManager 빈을 생성하도록 설정된다. 이것은 의도적 인 것이 아니지만 타사 종속성으로 인해 발생합니다. 효과는 양성으로 보입니다. 내가 디버깅을 통해보고있는 것은 Hibernate 기반 DAO를 통해 객체를 영속화 할 때 DataSourceTransactionManager가 호출되고 HibernateTransactionManager는 호출되지 않는다는 것입니다. 빈은 모두 'transactionManager'라고 불립니다. Spring Javadoc은 (지금 생각해 보면, 다시 읽는다고 생각합니다.) 지역 리소스에 대해서는 괜찮습니다. 바로 이것이 우리의 상황입니다. 나는. 분산 된 JTA 기반 환경이 아닙니다.HibernateTransactionManager 대신 ORM 지속성을 위해 DataSourceTransactionManager를 사용해도 괜찮습니까?
제 질문은 ORM 기반 지속성을 위해 HibernateTransactionManager를 사용하지 않는 것이 부정적인 영향을 미치는지입니다. HibernateTransactionManager가 DAO의 @Transactional 어노테이션에있는 한정자를 통해 사용되도록 설정을 변경할 수 있습니다.
간단한 단위 테스트, 통합 테스트 설정에서 문제가 없지만 수천 명의 사용자와 높은 수준의 동시성이있을 때 전체 프로덕션 볼륨으로 확장하는 것이 더 중요합니다.
TIA, 이것이 너무 애매하지 않기를 바랍니다.
봄 3.0.x BTW.
이것은 스프링 3.1 문서에 있습니다.
초 11.9 "일반적인 문제에 대한 해결책".
트랜잭션 기술 및 요구 사항 중 선택하여 올바른 PlatformTransactionManager 구현을 사용하십시오.
+1 흠. 재미있는. 고맙습니다. 이 테스트 중 하나를 시도합니다. DAO 호출은 트랜잭션 내에서 발생하고 DAO는 getSession()을 호출하므로 Spring SessionFactoryUtils가 새로운 세션을 손에 넣고 모든 것이 잘된 것처럼 보입니다. 그러나 당신이 말한대로 - 우리는 얼마나 자주 롤백을 쉬는 것을 기억합니까? –
좋은 사람. 나는이 시험을 시도했다. 저장 후 Hibernate tx mgr과 함께 저장이 롤백 된 후 예외가 발생했습니다. DataSourceTransactionManager에서는 그렇지 않습니다. –
당신은 당신의 말을 뒷받침 해주는 공식 문서를 제공 할 수 있겠습니까? "Hibernate txn 관리자없이 HibernateOperations에 대한 모든 호출은 트랜잭션과 별도의 세션에있게 될 것입니다"? 나는 DataSourceTransactionManager + Hibernate를 사용하고있다. – DerekY