Javaの3層(非WEB)データベースアプリケーション - どのAPI /テクノロジーが適切ですか?

StackOverflow https://stackoverflow.com/questions/3143803

  •  01-10-2019
  •  | 
  •  

質問

私は現在、(非常に)小さなデータベースアプリケーションの研究段階にいます。

それは、システムを実行する3つまたは4つのクライアントマシンしか持っていない地元の慈善団体向けです - しかし、クライアントから外的ロジックを遠ざけるために、私は3層アーキテクチャの使用に傾いています(データはあります。クライアントが知る必要がないことは、必要に応じて常に読み取りされ、更新されます)

IEクライアント<->サーバーロジック<->データベース

私はJava自体といくつかのフレームワーク/ライブラリに慣れていますが、ここで私を助けることができるフレームワークに特に精通していません。明らかに私はデータベースハーフにJDBCを使用しますが、クライアントとサーバーの間の通信は現時点ではつまずきです - たとえば、私は本当に生のソケットの近くに行きたくありません(少なくとも、少なくとも別のものは別のものです解決策が存在する必要があります)

私は何人かの開発者に、どのようなAPIを使用するかについての意見について知っていることを尋ねました。これまでのところ、Restful Tuffinc、Soap、Cobra、そして他の多くのテクノロジーについて聞いたことがあります。石鹸は私の注意を引いた主なものです(ウェブだけでなく通常のアプリケーションでそれを使用する良い例がいくつかあるので)が、まだどこに行くべきかはまだわかりません - それは一般に特に適切ではないようですこのような目的アプリ(EJBもポップアップしましたが、私はそれを目的とした多くの憎しみを聞きました - これは当然ですか?)

「仕事に最適なツール」を見つけるためには、実際にそれぞれを「取得」するためにそれぞれを学ぶ必要があるかのように感じます(これは明らかに非現実的です)

誰かが私にこのようなAPIを選択する方法について私にガイダンスを教えてもらえますか(私が以前にそれらを使用したことがないとき)、またはいくつかの一般的なものについての情報を教えてください。一番?

それとも、私はマークを完全に逃したかもしれませんが、明らかな短所のないこの正確な状況を目指しているフレームワークがありますか?

助けてくれてありがとう。

編集:

それが実際に何をしているのかを完全に忘れていました:それはひどく複雑ではありません - 慈善団体は輸送スキームを実行しているので、ドライバー、クライアント、ドライバーの走行距離記録などの詳細を保持します。ドライバーは、「永遠に」継続する可能性のある繰り返し(継続的な)ドライブに割り当てることができるためです。ただし、進行中のドライブの各インスタンスは、個別にキャンセルまたは編集できるため、一意でなければなりません。

私が3層に釣りをしている主な理由は、慈善団体であるため(ひどく「精通」していない多くの年配のボランティアコンピューターユーザーと一緒に)私はUIを頻繁に更新して、バグやビットを解決するために非常に頻繁に更新するかもしれません。初心者のユーザーにとって非常に明確です。私の計画は、サーバーとDBの間のバックエンドを最初に絶対に「防弾」を取得し、次にUIにすべての焦点を注ぐことです。リモートでそれを開発すると、クライアント側の更新の焦点はわずかに簡単です)

これらの属性はすべて、おそらく「Webベースのシステムを実行する」と叫ぶ - ここでの障害は、それらがすでに実行しているいくつかのアプリケーションとのあらゆる種類のトリッキーな統合の後であるということです。 Webアプリ。

役に立ちましたか?

解決

サーバー自体には、ある種のJavaeeサーバーが必要です。

ここの一般的な実装はそうです ガラスフィッシュ (参照実装)および Apache Tomcat...サーブレット容器よりも高度なものを必要としないと仮定します。 Webサービスを使用しているだけであれば、そうでない可能性があります。

クライアントの場合、おそらくSwingまたはSWFを使用するGUIアプリケーションを使用すると思います。また、Webアプリケーションを作成することもできます。これは、Webサーバーが既に関与しているためです。

クライアントからサーバー通信の場合、 JAX-WS (SOAP Webサービス)または JAX-RS (REST FULS SERVICES)実装。

Jax-WSの実装にはSunの実装が含まれます メトロ (これは登場します Java 6 Seの一部) また Apache CXF.

JAX-RS実装には含まれます ジャージーApache CXF.

データベースレイヤーに関しては、JDBCは唯一の選択肢ではありません。 Javaにもあります Java Persistence API (JPA、現在バージョン2.0)。

JPAは通常、データベースレイヤーを簡素化するためにJ2EEアプリ(特にWebアプリ)で使用されます。一般的な実装はです Eclipselink JPA (Obsoletes Oracle Toplink)および 冬眠's 注釈.

これらはすべて、Javaee:Servlet 2.5、Jax-WS 2.0、Jax-RS 1.1、およびJPA 2.0を構成するさまざまな標準に基づいています。

他のヒント

EJBもポップアップしましたが、私はそれを目的とした多くの憎しみを聞きました - これは当然ですか?

EJB仕様のバージョン1と2に完全に値しました。しかし、EJB V3は、それらを完全に使用するのが快適になる巨大な単純化を表しています。私は実際に良心で、手動JDBCの代わりにエンティティビーンを使用することをお勧めします。

通信プロトコルについては、EJBを休憩または石鹸サービスとして公開することは、最新のEJB 3.1スペックではばかげて単純です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top