web-dev-qa-db-ja.com

EJB、Hibernate、Spring、JSFの違いは何ですか?

さまざまなJavaフレームワークと非常に混同しています。 Javaサーバープロジェクトを作成して、RestfulなWebサービスを提供したいのですが、どのフレームワークを選択すべきか本当にわかりません。 JSF、EJB、Hibernate、Springの違いは何ですか?もっと理解してください。

39
user261002

これらは異なるレイヤーのフレームワークです。

  • [〜#〜] jsf [〜#〜]はビュー(Web)レイヤー用で、コンポーネント指向のフレームワークです(ページのすべての部分がコンポーネント、状態を持つ)WicketやTapestryのような、Spring MVC、Struts、Stripesのようなアクションフレームワークとは異なります

    書籍: Core JavaServer Faces(3rd Edition)
    チュートリアル: CoreServlets.com

  • EJB 3.xは、 JavaEE スタックの一部であるコンテナです。依存性注入やBeanライフサイクル管理などを行います。通常、EJB3用の完全なJavaEEアプリケーションサーバーが必要です。

    チュートリアル: JavaEE 6チュートリアル:EJB
    本: EJB 3の実際

  • Springもコンテナですが、SpringはJavaコード(単純なメインクラス、アプレット、Webアプリ)で実行できますまたはJavaEEエンタープライズアプリ)。 SpringはEJBができることのほとんどすべてを行うことができますが、依存性注入と非侵入型トランザクション管理で最も有名だと思います

    オンラインリファレンス (優秀)
    本:Spring 3.xで良い英語の本を見つけることができませんでしたが、いくつかは作成中です

  • Hibernateは最初の大きなものでした [〜#〜] orm [〜#〜] (オブジェクトリレーショナルマッパー)Javaプラットフォーム、およびそのようなものとして大きく影響を受けた[〜#〜] jpa [〜#〜](EJB3標準の一部ただし、EJBコンテナなしで使用できます)。 JPAに対してコーディングし、Hibernateをプロバイダーとしてのみ使用することをお勧めします。この方法でEclipseLinkなどに簡単に切り替えることができます。

    書籍: Pro JPA 2:Java™Persistence APIをマスターする (休止状態固有ではない)、
    HibernateでのJava Persistence (少し古くなっています)

54
  • JSF:GUIフレームワーク-バックエンドのみを実装する場合、これは必要ありません
  • EJB:以前は恐ろしく複雑であった分散コンポーネントの標準ですが、標準のバージョン3は非常に使いやすいです。これはソリューションの一部である可能性があります。
  • Hibernate:オブジェクトリレーショナルマッピングフレームワーク。 HibernateとEJBの両方で現在サポートされているJPA(Java Persistence Architecture)標準のインスピレーションとして機能しました。
  • Spring:依存性注入、Web GUI、AOPなど、あらゆることを行うアプリケーションフレームワーク。

ただし、RESTを実行する場合、最も重要な標準は JAX-RS です。 Springフレームワーク内またはEJBで使用できます。永続化のために、Hibernate、またはGlassfishな​​どのEJBコンテナのJPA実装を使用できます

7

EJBは Enterprise Java Bean -説明についてはリンクを参照してください。ただし、基本的には 'default' Javaエンタープライズアプリケーション。

HibernateはORMフレームワークです。アプリケーションのオブジェクト/クラスをデータベーステーブルにマップする方法。データをデータベースに永続化する方法に関連しています。

Springは、IoC/Dependency Injectionコンテナーであり、多くの便利で十分にテストされた抽象化を提供して、生活を楽にします。 Springは、独自のアプリケーションフレームワークのようなものです。

JSFはJava Server Faces、Java Webアプリケーションのビューテクノロジです。

EJB OR Spring。どちらかを使用して、必要に応じてHibernateを永続化実装として使用できます。これを行う必要はありません。RESTFulWebサービスの場合、実際にはJSFが必要です。

人々は春に非常に満足しています-私はそれを使用することをお勧めします...

5
hvgotcodes
  • JSF-Java Server Faces-> Web User Interface
  • EJB-エンタープライズJava Beans->ステートフル(セッション指向)またはステートレス(サービス)、メッセージ駆動(非同期)のコンポーネント
  • Hibernate-他のJPA実装(Eclipselink、OpenJPAまたはToplink)と同様の永続サービス
  • SpringはEJBのない別の世界で、他のビューテクノロジーを統合できます。それは非常に柔軟です。

あなたはJEE5/6と春の間で決定する必要があります。赤または青の錠剤を服用しないでください。

2
stacker