거래 등을 신경 쓰지 않으면 작업 단위가 더 효율적입니까?
-
06-09-2019 - |
문제
내 웹 페이지에 10 개의 데이터베이스 호출이 있고 트랜잭션이 필요하지 않은 경우 데이터베이스 (읽기)에서 데이터를 얻는 것만으로도 작업 클래스의 단위를 사용해야합니까?
데이터베이스 호출 당 새 세션을 만드는 것이 너무 비싸기 때문입니까?
해결책
nhibernate를 사용하면 세션 공장 생성이 매우 비싸다 (따라서 세션 공장이 생성되면 아마도 세션 공장을 캐시하고 싶을 것이다. HttpApplication
) 그러나 세션 생성은 매우 저렴합니다. 다시 말해, 코드를 청정하게 유지하면 여러 세션 창작물이 반드시 나쁜 것은 아닙니다. NH 문서가 가장 좋다고 생각합니다.
IsessionFactory는 모든 응용 프로그램 스레드에서 공유 할 수있는 비용이 많이 드는 스레드 사프 객체입니다. ISESSION은 단일 비즈니스 프로세스에 한 번 사용해야하는 저렴한 비 스레드 안전 객체입니다.
따라서 UOW 패턴을 사용하는 것은 아마도 그렇지 않을 것입니다 더 여분의 오버 헤드로 인해 효율적이지만 좋은 관행이며 오버 헤드는 아마도 당신을 해치지 않을 것입니다. 조기 최적화 및 그 모든 것.
다른 팁
예, 거래를 사용해야합니다. Ayende의 블로그에서 :
"nhibernate는 데이터베이스에 대한 모든 액세스가 거래에 따라 수행된다고 가정하고 거래없이 세션의 사용을 강력하게 권장하지 않습니다."
자세한 내용은 다음은 그의 블로그 게시에 대한 링크입니다.
http://ayende.com/blog/archive/2008/12/28/nh-prof-alerts-of-us-courged.aspx