2017-04-11 23 views
1

json POSTを受け入れるサーブレットdoPostを持つJava Webアプリケーションがあります。それを「人」と呼ぶことができます。それで{name: "Joe"、年齢:35}のようなものを受け取ります。そして、これを捕獲するためのデータバインドジャクソンクラスはJavaサーブレットと永続性構造

public class Person { 
    public String name; 
    public int age; 
} 

は、私は現在、DBのものは、サーブレットクラスの内部で起こっているような...もあります。したがって、サーブレットは要求を受け取り、それをPersonオブジェクトにデシリアライズし、その結果オブジェクトを取得してJDBC接続を作成し、挿入を実行します。これを構成する最善の方法は何ですか?これは大丈夫ですか?永続性がサーブレットよりもオブジェクト自体にリンクされているように感じる。 DB機能をPerson objに入れる必要がありますか?あるいは、新しい「もの」を作成してそれを処理しますか?

答えて

1

永続性がサーブレットよりもオブジェクト自体に多くリンクされている必要があります。

どちらも基本的には、我々は適切すなわちアプリケーションレイヤする必要がある、我々はフロントエンド(ユーザーインターフェース)懸念やビジネスロジックの両方をミックスし、Webアプリケーションを積層に関する詳細な説明については、以下をチェックしてはならない、正しいです。

私はDB機能をPerson objに入れるべきですか?または、それを処理するために新しい「もの」を 作成しますか?

いいえ、DAO(データアクセスオブジェクト)またはリポジトリレイヤを使用する場合とは別に、データアクセスレイヤを個別に処理する必要があります。 >サーブレット&コントローラクラス - - >サービス・レイヤー - > DAOレイヤー - >データベース

これらの層のそれぞれ1

HTML/JSP:一般的に、ウェブアプリケーションアーキテクチャは次のように動作して

それ自身の理由でのものであり、私たちは懸念を混ぜ合わせるべきではありません。

は今、具体的(DAOパターンがどのように動作するかをここで見て)、物事を容易にするために利用できる様々なフレームワークがあるDAO層の話やORM(オブジェクト関係マッピング)は、あなたが興味があるかもしれない概念です。名前だけの数に、一般的なORMフレームワークはHibernateSpring data JPAです。


UPDATE:

ので、サーブレットが要求を受け入れ、JSONスキーマと一致して、いくつかの データバインドクラスにデータをデシリアライズします。次に、それらをいくつかの種類の操作を行ういくつかの "サービス層" に渡し、 DAOオブジェクトを生成してそれを保存しますか?

あなたが欠けているのは、DAOオブジェクトがシングルトンクラス(データを保持しておらず、データベースにアクセスするためのメソッドを提供するだけです)であり、モデル/エンティティBeanが本当にありますデータの保存に使用されます。

あなたは、以下の簡単な例は、データベース内のPRODUCTテーブルにアクセスしていると仮定して参照することができ

ProductDAOImplクラス(シングルトンオブジェクト):

public class ProductDAOImpl implements ProductDAO { //or ProductRepository 

    public boolean save(Product product) { 
     //add implementation 
    } 

    public List<Product> queryProducts() { 
     //add implementation 
    } 

    public Product queryUniqueProduct(String productId) { 
     //add implementation 
    } 

    //etc...any other methods you would like 
} 

製品クラス(一つの目的のためにクライアント/ユーザからの各リクエスト):


何を要求し、データモデルの間に不一致がある場合は? 1は、ビジネス・ロジックを処理し、他方があるので

必ず、両方のプレゼンテーション層豆とエンティティ(データベース)モデル豆、すなわち別々でなければならないことを確認し、これらの二つの層間で豆を共有する良い習慣ではありませんユーザインタフェース(フロントエンド)のために、両方とも疎結合であるべきです。

+0

ので、サーブレットは、要求を受け入れ、JSONスキーマと一致するいくつかのデータバインドクラスにデータをデシリアライズします。そして、それは操作のいくつかの種類を行い、テーブル構造に一致するDAOオブジェクトを生成し、それを保存し、いくつかの「サービス層」にそれらを渡しますか? – MichaelB

+0

は例を追加しました、あなたが要求し、データモデルの間に不一致がある場合は...のように、あなたは「人」、JSONのように、「{名前のPOSTを受け取る何 – developer

+0

の上に見える:ジョー、年齢:21、アドレス:{ストリート:偽、市:シアトル}}その後、任意のデータ操作を行うには、「AddressDAO」を利用し – MichaelB

関連する問題