2010-02-08 3 views
1

나는 최근에 nhibernate 세션 스코핑과 컨텍스트를 발견했다. 으로 보이는데 이는 데스크톱 응용 프로그램에서 ThreadStaticSessionContext를 사용하여 구성을 부트 스트랩하고 컨텍스트에 세션 팩토리를 바인딩 한 다음 필요에 따라 sessioonFactory.GetCurrentSession()을 호출하는 것만 큼 간단합니다. 어떤 의견, 조언 및/또는 링크가있을 수 있습니다 내가 경험 nhib 개발자들 찾고 있어요GetCurrentSession 세션 응용 프로그램을위한 세션 스코핑

다시 :
(1)이 또는 데스크톱 응용 프로그램
(2) 단위를위한 좋은 방법이 아닌 이유 mocks로 테스트하기
(3) IStatelessSession을 원할 때해야 할 일
(4) 앱이 웹 기능을 필요로 할 때 어떻게 조정되는지.

답변

1

1) 세션의 범위면에서 좀 더 유연한 것이 좋습니다. 좀 더 많은 정보를 원하시면

2)에 대한 What should be the lifetime of an NHibernate session?에서 봐 당신 수 다시, sessionFactory에 대한 호출을 멀리 추상화,하지만 가정이 코드는, 당신이 좀 더 세션 범위를 조사해야한다고 생각 단위 테스트

3)이 구현에서 좋은 질문입니다.

4) 웹 응용 프로그램에서 ThreadStaticSessionContext를 사용할 수 없습니다. 요청에 대해 Session-Per-Request를 사용하고 요청 시작시 새 세션을 작성하고 끝에 요청을 처리하려는 경우가 많습니다.

DI를 사용하여 Session을 생성하는 것을 추상화하는 것이 좋습니다. 코드를 실행하기 전에 코드에서 XYZ.GetCurrentSession()을 호출하면 문제가 발생합니다. 새로운 세션을 생성하는 경우 (현재 컨텍스트에서만 사용 가능) 괜찮습니다.

+0

답장을 보내 주셔서 감사합니다 - 그 다른 SO 질문에 좋은 정보. 여전히 컨텍스트와 GetCurrentSession, ThreadStaticContext에 더 많은 부분이있을 수 있습니다. 건배 – Berryl