문제

내 웹 페이지에 10 개의 데이터베이스 호출이 있고 트랜잭션이 필요하지 않은 경우 데이터베이스 (읽기)에서 데이터를 얻는 것만으로도 작업 클래스의 단위를 사용해야합니까?

데이터베이스 호출 당 새 세션을 만드는 것이 너무 비싸기 때문입니까?

도움이 되었습니까?

해결책

nhibernate를 사용하면 세션 공장 생성이 매우 비싸다 (따라서 세션 공장이 생성되면 아마도 세션 공장을 캐시하고 싶을 것이다. HttpApplication) 그러나 세션 생성은 매우 저렴합니다. 다시 말해, 코드를 청정하게 유지하면 여러 세션 창작물이 반드시 나쁜 것은 아닙니다. NH 문서가 가장 좋다고 생각합니다.

IsessionFactory는 모든 응용 프로그램 스레드에서 공유 할 수있는 비용이 많이 드는 스레드 사프 객체입니다. ISESSION은 단일 비즈니스 프로세스에 한 번 사용해야하는 저렴한 비 스레드 안전 객체입니다.

따라서 UOW 패턴을 사용하는 것은 아마도 그렇지 않을 것입니다 여분의 오버 헤드로 인해 효율적이지만 좋은 관행이며 오버 헤드는 아마도 당신을 해치지 않을 것입니다. 조기 최적화 및 그 모든 것.

다른 팁

예, 거래를 사용해야합니다. Ayende의 블로그에서 :

"nhibernate는 데이터베이스에 대한 모든 액세스가 거래에 따라 수행된다고 가정하고 거래없이 세션의 사용을 강력하게 권장하지 않습니다."

자세한 내용은 다음은 그의 블로그 게시에 대한 링크입니다.

http://ayende.com/blog/archive/2008/12/28/nh-prof-alerts-of-us-courged.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top