gpt4 book ai didi

nhibernate - 如何将 SOA 与 nHibernate 一起使用?

转载 作者:行者123 更新时间:2023-12-04 02:15:26 26 4
gpt4 key购买 nike

首先,我要澄清一些词:当我使用“用户”这个词时,你必须理解“应用程序用户”和“ patient”是模型层中的一个“项目”。

现在让我们解释一下上下文:

  • 客户端应用程序有一个按钮“get patient”和“update”,一个文本框“patient name”和单击“获取患者”按钮后显示返回患者的网格。

  • 在服务器端,我有一个 WCF 方法 GetPatient(string name),它搜索回收的患者并对与 nHibernate 一起使用的 PatientEntity 执行一些业务逻辑。该方法返回一个 PatientDto(来自 PatientEntity 的映射)。我有一个 Update(PatientDto patient) 方法来更新修改后的患者。

  • 用户可以修改返回的 PatientDto 并点击“Update”按钮。

到目前为止,我有两个想法通过这个 senario 来管理“session”:

  • 第一个想法:我在我的 DTO 中公开了一个“ID”属性,因此当用户点击更新时,我在服务器端搜索“patient”,使用 nHibernate 的“GetByID()”,我用来自 PatientDto 的数据更新结果并调用 nHibernate 的“< em>Update()”方法。

  • 第二个想法:我在服务器端手动创建一个 CustomSession(为了清楚起见,我使用这个名称)类,它封装了一个 ISession 并公开了 session 的唯一 ID它将在客户端和服务器之间传输。因此,当客户端向服务器发送 PatientDto 和唯一 session ID 时,我可以获得 CutsomSession 并使用 Update() 方法更新患者>ISession

我不喜欢这些想法。因为第一个开销很大而且没有使用nHibernate的特性。第二个想法要求开发人员在调用之间自行管理 CustomSession 的 ID:它很容易出错。

此外,我确信 nHibernate 提供了这样一种机制,尽管我用谷歌搜索并没有发现任何相关内容。

那么我的问题是:

  • 我应该使用什么机制(模式)?当然,该机制应该支持实体的对象图,而不是单个实体!”
  • nHibenrate是否提供这样的机制?*

预先感谢您的帮助,

最佳答案

我不认为这是一个 Hibernate 问题,在我看来这是一个常见的误解。 Hibernate 是一个 OR-Mapper,因此可以处理您的数据库对象并提供基本的事务支持。差不多了。
客户端-服务器环境中 Sessionmanagement 的解决方案是使用 e.g. Spring.net 确实为您的问题提供了解决方案(搜索 OpenSessionInView)并且与 NHibernate 集成得很好。
与基于 session 的解决方案相比,您提到的无状态方法具有许多优势。例如考虑并发性。如果您的提交是无状态的,您可以简单地对客户端失败的 Save() 操作使用react,例如通过重新加载 View 。
除了你使用 Hibernae 的 2 个很好的论据之外,如果做得好,安全性可以防止 SQL 注入(inject)。

关于nhibernate - 如何将 SOA 与 nHibernate 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6642883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com