1

私たちの会社は現在、従業員が使用するいくつかのツールを実装しています。これらのツールを開発することになったのは、社内で私だけのプログラマーだからです。

ただし、WebサービスやJavaの経験はほとんどないため、ここでいくつかのロジックに少し困惑しています。誰かが私にいくつかのガイダンスを与えることができることを願っています

英国でホストされている mysql データベースがあります。これは、英国内および英国外の他のオフィスで使用されるツールのデータを提供します。Web サービス経由でデータベースへのアクセスを提供したいと考えています。

しかし、これを調べてみると、何か重要なものを見逃しているような気がします。現在、すべてのデータベース テーブルにメソッドを作成しようとしています。そのため、各テーブルには select、update、delete メソッドが必要です。20 個の奇数のテーブルがあるためです。つまり、Web サービスには 60 個のメソッドが公開されることになります。これは正常ですか?

これを行うにはもっと簡単な方法があるように思えますが、Java の経験がほとんどないため途方に暮れており、Google fu はこれまで失敗してきました。

これを行う「通常の」方法が何であるかについて、誰かが私にいくつかの指針を与えることができますか? そして、私が単に見落としている方法があれば。

4

4 に答える 4

2

これはかなり大きな学習曲線ですが、典​​型的なアプローチの 1 つです。

  1. DB にクエリを実行し、リレーショナル データ モデルから Java オブジェクト モデルに変換するデータ アクセス オブジェクト (DAO) を作成します。極端なパフォーマンスが考慮されない場合 (ほとんどのアプリケーションでは考慮されません)、HibernateJPAなどの ORM マッピング フレームワークを検討してください。おそらく、テーブルごとに 1 つのメソッドは必要ありません。多くの場合、複数のテーブルが 1 つのドメイン オブジェクトを構成します。たとえば、バンキング アプリでは、customer というテーブルと、customer_balance という関連テーブルがあるとします。顧客に残高を提示したいだけなら、「残高」というフィールドを持つ「顧客」というドメイン オブジェクトを 1 つ持つことができます。Customer DAO は、customer と customer_balance を結合して、単一の Customer オブジェクトを作成します。

  2. サービスを作成して DAO をラップし、ビジネス ルールを適用します。テスト容易性が向上するため、可能な限りビジネス ルールをサービスに保持します。簡単な銀行サービス メソッドの例は、"withdrawMoney(amount)" です。このサービスは、DAO を介して DB から Customer を取得し、まずカスタムの現在の残高が少なくとも「金額」であることを確認し、現在の残高から「金額」を差し引いて、DAO を介してデータベースに保存します。

  3. Web レイヤーはサービス レイヤーを呼び出し、データをユーザーに提示して、ユーザーが操作できるようにします。ある時点で、Web サービス API を介して Web 層がサービス層と通信できるようにする必要があるかもしれませんが、それはおそらく初期の実装ではやり過ぎです。

他の人が引用しているように、Java Petstore アプリケーションはこのアプローチの良い例です。オラクルはもう Petstore アプリを保守していませんが、ボランティアがそれを GitHub にコピーし、最新の J2ee バージョンで最新の状態に維持しています。GitHub サイトへのリンクは次のとおりです: https://github.com/agoncal/agoncal-application-petstore-ee6

于 2013-06-24T16:43:49.883 に答える
0

おそらく、Java EE 7 チュートリアルのこの部分を読んで、Web サービス開発の概要を説明することから始めたいと思うでしょう。あなたが提案していることは奇妙に思えますが、おそらくあなたが本当に望んでいるものではありません. すべてのテーブルを更新/削除などに公開したい場合は、データベースサーバーへのポートを開くだけの方がよいかもしれませんが、これは一般的に悪い考えと考えられています.

おそらく、より高いレベルで作業し、データベースの更新ではなくオブジェクトを渡したいと思うと思います。たとえばPerson、アプリケーションにオブジェクトがあるとします。それをWebアプリケーションとクライアントアプリケーションとの間で受け渡しし、Webアプリケーションにデータベースへの配置、削除などを心配させることができます。あなたが提案している方法で更新を実行することには技術的に問題はありませんがそれは何年もの間行われました。

于 2013-06-24T16:27:47.013 に答える
0

はい、20 個のテーブルすべてに選択 (HTTP GET)、更新 (HTTP PUT)、および削除 (HTTP DELETE) が必要な場合、おそらく 20*3=60 メソッドが必要になります。

于 2013-06-24T16:25:56.967 に答える