持久性抽象:装饰与灵活性

时间:2019-05-31 09:40:52

标签: oop nhibernate orm persistence lazy-loading

我尝试编写具有n层模式的软件。它有一个客户端,可以通过RabbitMQ从服务器获取数据。

服务器(我称为ServiceHost)是一个控制台应用程序,它配置依赖项注入容器并通过容器(即LoginService)加载外观服务。 LoginService在构造函数中获得一个带有UserRepository(后面是NHibernate)的UnitOfWork。

现在我的问题是:

LoginService知道客户端需要该用户及其用户组。对于每个已加载的用户组,屏幕都会访问屏幕名称(用于菜单)。

但是LoginService不了解NHibernate的惰性。 现在,我可以访问在NHibernate中初始化它们或序列化用户并解析每个关系所需的每个属性。但是两者都是无效的。另一方面,当我在UserRepository中有一个参数(如fetch或future)时,我就教LoginService有关数据库和NHibernate的信息。

距离直接将ISession注入LoginService一步还很远,但是现在我有了抽象的方法来更改持久层。

那么您认为解决此问题的最佳方法是什么?或在将数据发送到客户端时如何(或在何处)获取或初始化数据?我是否在错误的层上设置了UnitOfWork(在服务/门面层后面,还有另一个业务层,即UserService.Login(user,hostname))?

预先感谢您的回答。

0 个答案:

没有答案