NHibernate桌面应用程序是否应该使用SessionFactory和多个会话? 每个事务一个会话规则是否仅适用于Web应用程序?
此致 MadSeb
答案 0 :(得分:4)
是的,NHibernate桌面应用程序通常应该使用多个会话。
在双层方案中,您将使用每个逻辑“交互会话”的会话,例如给定的“视图”或“屏幕”。在这里,您可以比在Web应用程序中更长时间地维护会话,并获得延迟加载的全部好处,但在某些时候您希望用户“保存”或“取消”并转到其他内容,这通常是结束会议的好地方。
在整个应用程序中使用单个会话可能会导致大量内容被缓存,客户端数据可能会变得陈旧,或者您可能遇到并发问题。
此外,一旦会话遇到异常,它就不再有效,你将不得不放弃/重置你正在做的事情。如果这是一种形式,那不是什么大问题,但如果你的应用程序中有很多对象引用相同的会话,那么它们都将处于受损状态。
答案 1 :(得分:1)
是。会话应该尽可能短,因为它被视为一个工作单元。
因此,我会根据'用例'创建一个会话。 (用例可以跨多种形式)。