为什么我要在 NHibernate 会话之上使用工作单元模式?

2024-01-22

我什么时候会在 NHibernate 已经提供的内容之上编写一个 UoW 实现?有现实世界的例子吗?


您所描述的工作单元已经由 NHibernate 提供,因此没有理由执行这样的工作单元。

我们在 WCF 服务中拥有的是更高级别的工作单元,其中包含对我们当前工作单元的应用程序很重要的信息。这包括为我们抽象 NHibernate ISession。当你分解它时,你会得到适合三类的代码

  1. 需要处理工作单元的代码。谁支持工作单元并不重要。它可以是 NHibernate、iBatis 或自定义 ORM。所有代码需要做的就是加载、回滚、保存等。它不也不应该关心用于执行此操作的机制。

  2. 需要直接处理 ISession 的代码,因为它正在执行 NHibernate 特定的操作。通常这与需要创建的复杂查询有关。

  3. 不需要知道它正在工作单元中运行或访问 ISession。作为讨论的一部分,我们可以完全忽略这一点。

虽然 1. 中的代码只能针对 ISession 工作,但我们的偏好是尝试抽象出代码中我们无法直接控制或可能更改的内容。其价值有两个原因。

  • 当我们开始时,我们并没有 100% 相信 NHibernate。我们正在考虑 iBatis 或定制的东西。显然这不再是问题。

  • 整个团队都不是 NHibernate 专家,我们也不希望他们成为专家。大多数情况下,人们编写的代码都属于第一类,他们所知道的就是我们的工作单元。当类别 2. 中的代码必须编写时,它是由团队中熟悉 NHibernate 的人员编写的。

因此,最后我想说的是,您所讨论的工作单元类型是不需要的,我建议更高级别的工作单元可以提供很多价值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我要在 NHibernate 会话之上使用工作单元模式? 的相关文章

随机推荐