如果我不关心交易等,工作单元是否会更高效?
-
06-09-2019 - |
题
如果我的网页上有 10 个数据库调用,并且它们都不需要任何事务等。他们只是从数据库获取数据(读取),我是否仍然应该使用工作单元类?
是因为每次数据库调用创建一个新会话成本太高吗?
解决方案
与NHibernate,会议工厂创建是非常昂贵的(所以你要一旦创建它缓存会话工厂,可能在HttpApplication
),但会话创建是非常便宜的。换句话说,如果它让你的代码更加清晰,多会话创作未必是坏事。我认为NH文档最好说的:
这是ISessionFactory是 贵到创建线程对象 它为所有的共享 应用程序线程。一个ISession是 廉价的,非线程对象 应该使用一次,单个 业务处理,然后丢弃。
因此,使用UOW模式可能不是的更多的效率,由于额外的开销,但它是一个很好的做法,开销可能不会伤害你。过早的优化和所有。
其他提示
是的,您应该使用交易。来自 Ayende 的博客:
“NHibernate 假定对数据库的所有访问都是在事务下完成的,并且强烈反对在没有事务的情况下使用任何会话。”
有关更多详细信息,请参阅他的博客文章的链接:
不隶属于 StackOverflow