2012-03-17 14 views
7

に私はJSONにそれらをシリアル化しようとすると、潜在的な危険を作成したモデルの束が他のモデルに依存して私のプレイFrameworkアプリケーションの状況を、持っています。また、すべてのモデルにはクライアントに公開したくないプロパティがいくつかあります。最後に、ではなく、少なくとも、Webクライアントが本当にDBから来るが、サードパーティのWebサービスからされていない受信moelインスタンスのプロパティの一部。 はDTOプレイフレームワーク

は、私はJSONにオブジェクトをレンダリングする前にカスタム・シリアライザを適用することが可能であることを聞いたが、私も単純なアプローチを使用したいと思います。その後、JSONにシリアライズされたDTOを。

の質問は、私はすべてのモデルクラスのDTO変換機能を置く場所?コントローラ?モデル?おそらく、最善のアプローチは、シリアライザ戦略に従い、各モデルに1つの変換クラスをいくつか作成することでしょうか?

私の最大の懸念は、コンバータインスタンスが互いに知っている必要があることです。なぜなら、明らかにAuthorインスタンスのBookインスタンスをそれぞれDTOにしてからDTOでAuthorを有効にしたいからです。これは本当に悪いですか?標準のJava EEアプリケーション(春)では

答えて

3

、あなたはモデルオブジェクトとのDTOとの間の変換を行うためにDozer frameworkを使用する必要があります。

Play!コンテキスト、私は専用のパッケージで、またはmodelsのサブパッケージにDTOとコンバータを配置する必要があります。

1

私はモデルクラスをDTOとして使用していて、公開したくないプロパティやその他のモデルの依存関係に@NoJsonExposeアノテーションを使用しています。

@NoJsonExposeアノテーションの実装と、これを考慮した改良されたRenderJson結果オブジェクトがあります。

https://play.lighthouseapp.com/projects/57987/tickets/1605-propose-nojsonexpose-annotation-to-make-renderjsoners-life-better

ただ、新しいRenderJsonオブジェクトを使用するControllerrenderJson()をオーバーライドする必要があります。

関連する問題