使用ORM时,如何安全地在层之间发送加载的实体

时间:2008-09-17 22:05:47

标签: architecture orm

当系统有N层时,以及使用ORM时,如何在层之间发送加载的实体?

你使用DTO吗?

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

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

2 个答案:

答案 0 :(得分:1)

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

如果Container具有经常不使用的数据集,那么它们将不会被加载,并且由请求的UI表单来调用它并将其发送以进行更新。 (我们构建了更新类以将所有信息一起传递)

对于加载了大量Container的UI Forms,我们只创建特殊类并填写我们需要的内容。它们是一些不用于持久性的只读容器。

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

答案 1 :(得分:0)

我只想找到与ORM相关的方式。

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

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

就延迟加载/延迟执行而言,应该对应用程序不可见。这是一个很好的服务,ORM提供,我很高兴它确实,但我的应用程序不应该知道或关心它。因此,如果ORM没有向您隐藏,那么我会再次查看一个处理此问题的包装器,以便应用程序不需要知道或关注。