2015-04-23 52 views
1

好吧,我最近开始阅读Hibernate,所以我的知识是非常原始的。 我读过一些地方,你不应该直接在你的应用程序中暴露你的hibernate pojo类,而应该创建代表你的应用程序中Pojo类的类。它就像只使用Pojo类的部分或全部字段的自定义类。过度暴露的休眠pojo

有人可以提出一些关于如何在应用程序中,我们可以阻止Pojos的过度暴露或什么是从服务器返回使用Pojos和自定义类的正确方法。

+0

听起来像你所指的是DTO“模式”。 http://programmers.stackexchange.com/questions/171457/what-is-the-point-of-using-dto-data-transfer-objects –

+0

是的,它的一些类似的。但我的问题是,这种分叉是必要的吗?我们不能直接使用pojo的客户端。 – annonymous

+1

那么,你会发现许多讨论,并将不得不做出自己的想法。我的偏好是使用实体作为'正确的'域对象:事实上它们恰好是持久的,既不在这里也不在那里。根据我的经验,DTO导致 - http://www.martinfowler.com/bliki/AnemicDomainModel.html - 实体或DTO都不会有任何行为。 –

回答

0

更好地为您自己的POJO类提供必需的字段......并且还会编写翻译器以将数据从休眠POJOS转换为您Pojos。

注: - 如果你的东西Hibernate的评估,对JOOQ看看.....

明天是出ORMss世界........

http://www.jooq.org/doc/3.6/manual-single-page/

+0

这是一个意见,而不是一个答案。你可以尝试使用你认为可以被认为是这种方法的好处的资格,因为必须创建和维护DTO以及映射器的开销。 –

+0

@Alan Hay 这只是我的建议老板..我只是让他看看JOOQ。我们通过JOOQ像技术那样获得的自由和灵活性不在Hibernates .....即使在Java 8流之后......你是否仍然相信ORM工具有地方......? –

0

一般来说,我认为这取决于您的需求,但是如果您想做正确的话,我建议您为您的DTO创建包含所需信息的自定义类。我已经写了一个article关于为什么使用实体可能会导致问题以及如何使用Blaze-Persistence Entity Views实现DTO来解决您的问题。这可能会帮助你了解这些影响。