2017-09-11 8 views
0

私はエンティティオブジェクトを作成するための最良のレイヤがどこにあるかを知りたいと思います。たとえば、Productというモデルがあり、作成したAPIメソッドをパス( "/ product")で作成しています。 APIメソッドでProductのオブジェクトを作成し、このオブジェクトをサービスレイヤに渡して検証し、検証の場合はDAOレイヤに渡して永続化します。Spring RestでEntityオブジェクトを作成する場所サービス中、DAOまたはAPIレイヤ?

しかし、私はこれが良い習慣であるかどうかはわかりませんが、サービスレイヤーにProductパラメータを渡し、APIレイヤーではなくサービスレイヤーで作成することも考えています。

私はあなたの考えや意見を聞くことに興味があります。検証

  • サービスレイヤ - - アプリケーション
  • DAO層のビジネスロジック - DB
  • に持続

    I

    • API層:

    答えて

    1

    各層は、作業の一部作品を行う必要がありますAPIレイヤでDTOオブジェクトを使用する方がよいと考えています。あなたには、いくつかの追加の検証を行うと、サービスメソッドを呼び出すことができます。このメソッドの本体で

    class ProductController { 
        public Response createProduce(@RequestBody @Valid ProductDto productDto) { 
         // ... 
        } 
    } 
    

    :サービスメソッドの本体で

    class ProductService { 
        public void createProduct(ProductDto productDto) { 
         // impl 
        } 
    } 
    

    たとえば、次のようなメソッドを持つことができますエンティティオブジェクトを作成し、DTOを新しく作成したエンティティにマッピングする必要があります。次に、DAOレイヤーを呼び出す必要があります。

    ほとんどの場合、サービスレイヤーはDAOオブジェクトからメソッドを呼び出すだけでなく、より多くの操作を実行する必要があります。また、同じトランザクションで操作を実行する必要があるため、サービスレイヤでもトランザクションを管理する必要があります(つまり、サービスメソッドに注釈を付ける必要があります)。

    DAOオブジェクトはエンティティのみを保持する必要があります。

    +0

    あなたの助言に感謝します。 – Super3bdo

    0

    私はAPIレイヤーでエンティティオブジェクトを作成せず、代わりにAPI呼び出しから受け取ったすべてのエンティティプロパティをラップするデータ転送オブジェクト(ProductDTO)を作成します。このDTOクラスは、サービスレイヤーでの検証に使用されます。すべてがうまくいくと、ProductエンティティインスタンスはDAOを通じてのみ保持されます。

    関連する問題