如果我的网页上有 10 个数据库调用,并且它们都不需要任何事务等。它们只是从数据库中获取数据(读取),我还应该使用工作单元类吗?
是因为为每个数据库调用创建一个新会话太昂贵了吗?
如果我的网页上有 10 个数据库调用,并且它们都不需要任何事务等。它们只是从数据库中获取数据(读取),我还应该使用工作单元类吗?
是因为为每个数据库调用创建一个新会话太昂贵了吗?
使用 NHibernate,创建会话工厂非常昂贵(因此您可能希望在创建会话工厂后缓存它,可能在 上HttpApplication
)但创建会话非常便宜。换句话说,如果它使您的代码更干净,那么创建多个会话不一定是坏事。我认为 NH 文档说得最好:
ISessionFactory 是一个创建成本高、线程安全的对象,旨在由所有应用程序线程共享。ISession 是一个廉价的、非线程安全的对象,应该为单个业务流程使用一次,然后丢弃。
因此,由于额外的开销,使用 UoW 模式可能不会更有效,但这是一个很好的做法,开销可能不会伤害您。过早的优化等等。
是的,您应该使用事务。来自 Ayende 的博客:
“NHibernate 假定对数据库的所有访问都是在事务下完成的,并且强烈反对在没有事务的情况下使用任何会话。”
有关更多详细信息,这是他的博客文章的链接: