2011-06-17 6 views
0

私はちょうどJavaのすべての成果とすべてを学んでいるので、しばらく私の心の中を飛び回っていたものを見つけたいと思っていました。 コードは、2つの異なるクラスの2つのメソッドの簡単な例です。最初は明らかに一部のページのコントローラであり、もう1つはサービスの一部です。プレゼンテーションレイヤーのどこに新しいエンティティを作成する必要がありますか?

@RequestMapping("/something) 
public void doSomething() { 
    ... 

    SomeEntity example = new SomeEntity(); 
    example.setAccount(account); 
    example.setSmthElse(else); 
    example.setDate(new Date()); 
    example.setSomething(something); 

    someService.saveSomeEntity(example); 
} 

... 

public void saveSomeEntity(SomeEntity object) { 
    someEntityDAO.save(object); 
} 

だからここに私の質問は、新しいエンティティSomeEntityとその設定の作成は性質が上記のように、プレゼンテーション層の一部で行われています必要がある場合、またはそれがすべてのparamsを渡すことによって、saveSomeEntity方法で何とか行うべきですそれ?

答えて

3

コントローラーがプレゼンテーションレイヤーではありません。 MVCのCです。パーシスタンスレイヤーは、モデルオブジェクトの作成ではなく、永続性に関係している必要があります。上のコードはOKです。コントローラ内ではなくサービス内にオブジェクトを作成するものもありますが、パラメータはコントローラですぐに利用できるため、IMHOは受け入れ可能です。

+0

申し訳ありませんが、私の間違いはコントローラをプレゼンテーションレイヤーと呼んでいます。私はまだ層のものと闘っているが、どちらがどれであるか把握していない。 (英語は私の母国語ではありません) – Rihards

2

はい、どのレイヤでもエンティティを作成できます。

エンティティに変換されるDTO(同じ構造を持つ別個のオブジェクト)を好む人もいます。

jspにJavaコードを書くのは避けてください。コントローラ内のオブジェクトをインスタンス化するか、バインディング・メカニズムをそのままにします。

+0

本当にjspでエンティティを作成しますか? – hvgotcodes

+0

もちろんjspではなく、Webレイヤー(コントローラー) - はい。実際には、JSPとコントローラの間にいくつかのバインディング・メカニズムがあります。 – Bozho

+0

私は彼がドメイン層をミラーリングするコントローラ層のオブジェクトのセットを指していると思います。ドメイン層から返されたオブジェクトをコントローラオブジェクトにマップするよりも、重複しているように見えますが、実際にドメイン層がサービスの背後にある場合は、状況によってはそうでないかもしれません。 – Casey

関連する問題