2011-10-19 2 views
2

저는 NHibernate와 Castle Windsor 모두 초보자입니다.하지만 현재 진행중인 응용 프로그램은 Castle Windsor의 NHibernate 기능 통합 레벨 2 즉 ISessionManager를 사용하고 있습니다.왜 CastleWindsor NHibernate 기능에서 ISessionManager를 사용하겠습니까?

필자는 수동으로 데이터를 유지하고 ISessionManager를 사용하기 위해 수행해야 할 작업을 비교해 보았으며 코드를 적게 작성하지 않았습니다. 내 질문에 ISessionManager가 필요한 이유가 무엇입니까? 그게 나에게 어떤 이점이 있습니까? ISessionManager를 사용할 때의 단점은 무엇입니까?

답변

1

우선, 세션을 직접 관리 할 필요가 없습니다. 웹 환경에서는 일반적으로 세션 요청에 대한 범위를 지정하려고합니다. 세션 관리자는 "OpenSession"을 호출 할 때 첫 번째 호출자가 "OpenSession"을 호출 할 때 동일한 세션을 가져 오는 동안 중첩 호출이 새 세션을 시작하도록합니다. httpmodule에서 세션을 시작/종료하거나 AOP 패턴을 사용하여 동일한 작업을 수행 할 수 있습니다.이 작업을 수행하면 하나의 데이터베이스에 대해 작업하고 여러 데이터베이스를 직접 처리하는 것이 다소 지루합니다. ISessionManager는 여러 데이터베이스를 처리 할 때처럼 깔끔하게 처리합니다.

+ 여러 데이터베이스에 대해 작업을위한 당신 경량, 비 침입 간단한 쉬운 지원 세션을 처리 호스팅 (단지뿐만 아니라이 IIS와 마찬가지로 nservicebushosting와 함께 작동) 불가지론

- 좀 더 DAL/리포지토리/일반 호출 코드의 상용구 코드