使用ORM时,如何安全地跨层发送已加载的实体

时间:2020-03-06 14:19:08  来源:igfitidea点击:

当系统具有N层时,以及使用ORM时,如何跨这些层发送已加载的实体?

我们是否使用DTO?

当不使用DTO并直​​接发送实体时,如何保护未初始化的延迟加载关系错误?

注意:这不是"应该使用N层吗?"问题。我假设系统已经有N层。

解决方案

好吧,我不知道是否有更好的方法,但是当我们使用Hibernate时,我们只是关闭了延迟加载,以便加载所有内容。这样做显然会花费更多,但是我不确定如何摆脱Hibernate会创建的惰性加载方法。

如果容器具有不经常使用的数据集,则将不会加载这些数据集,这取决于请求的UI表单对其进行调用并发送以进行更新。 (我们构建了更新类,以将所有信息一起传递)

对于加载了很多容器的UI窗体,我们只是制作特殊的类并填写我们需要的类。它们是不用于持久性的只读容器。

可能有更好的方法..但是我正在学习:)

我只是想找到使用ORM的方法。

这是一个吸引人的概念。像我们一样,我不希望应用程序中的其他层知道ORM存在。

我目前正在查看的是使用我设计的接口和部分类(C#/。net的东西,没有部分类,我想我会写一个包装器)将接口的实现添加到生成的类型由ORM。

就延迟加载/延迟执行而言,这对于应用程序也应该是不可见的。对于ORM来说,这是一项很好的服务,对此我感到很高兴,但是我的应用程序不需要知道或者关心它。因此,如果ORM并未向我们隐藏该信息,那么我会再看一看处理该问题的包装程序,这样应用程序就不必知道或者关心它。