2015-04-23 46 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來解決您的問題。這可能會幫助你瞭解這些影響。