2012-01-03 12 views
0

Java EEプロジェクトを開発する必要があります。私はJDBCとHibernateに関する別のチュートリアルを読んだ後に混乱します。HibernateとJDBCの選択方法は?

これらのチュートリアルを読んだ後、私は両方ともいくつかの賛否両論があることが分かった。今問題は、どちらが一番良いかをどのように決定できるかです。さらに、どのタイプのプロジェクトが一般的に私はJDBCを使用するのか、どのタイプのプロジェクトでは私はHibernateを使用するのかを知りたいと思います。

私は単一のテーブルに100.000レコードがあるテストアプリケーションを使用して、私はJDBCを使用すると3から4秒ですべてのレコードをフェッチできることに気付きました。私がHibernateを使用したとき、それは12〜14秒かかりました。

なぜHibernateのパフォーマンスがそれほど悪くなっているのですか。HibernateのパフォーマンスをJDBCのパフォーマンスに近づけるにはどうすればよいですか?

+0

私のORMライブラリは、プロジェクト/アプリケーションに依存しますが、あなたの次のDDD(ドメイン駆動型設計)とその後の休止状態があなたにもっと適しており、可能な限り最良の方法でそれを利用できるならば、一方、あなたのアプリケーションが一種のバッチアプリケーション(またはあなたが手元に用意されたDB設計を持っている)ならば、純粋なjdbcは、sigleテーブルに1つのlakh reordがあるとき、テストアプリケーションを使ってhibernateや他のORM – blob

答えて

0

まあ、あなたが入っているプロジェクトのタイプにかかわらず、Hibernateはいつもあなたの人生を楽にします。これによりデータベース操作がドメインモデルに近づきます。あなたはjavaクラスの規約を使用してデータベースを照会します。javaのフィールドにアクセスする方法と同じです。なぜSQLで入力するのではなく、どのフィールドがマップされているかをクロスチェックする必要があります。どの列名)。また、hibernateはデータベースクエリを実行した後にドメインオブジェクトを返します。そして、あなたが自分ですべてのものを構築しなければならないJDBCを見れば、いつでも役立ちます。

相対的に小さなプロジェクトで作業している場合は、JDBCを使用することもできますが、中規模から大規模のプロジェクトでは、必ずしもHibernateではないORMソリューションを使用すると便利です。

+0

よりも優れています。私はJDBCを使用して3秒ですべてのreordsをfetcehを使用することがわかりました。そして、私はHibernateを使用すると、12〜14秒かかります。 –

+0

どのように私は冬眠のperfomaneを増やすか? –

1

私は冬眠の専門家ではありませんが、私は私の経験上、単純なjdbcよりも冬眠を好む理由を指摘しています。私はあなたがすべてのあなたのモデルを作成し、1つのmavenのコマンドを実行しているannotations.Thenを使用して関係を定義することができますMavenプロジェクトでJPAのアノテーションを

  1. を休止状態を使用していた

    は、上のベース全体のリレーショナルデータベース、テーブルとリレーションを作成しました

  2. Hibernateは、ゲッターとセッターに基づいて結果セットをバックグラウンドでモデルに変換します.Jdbcとは異なり、自分で結果セットをモデルに抽出する必要はありません。再びあなたは多くの時間を節約しました

  3. Hibernateは通常、あなたがクエリに参加書く気にする必要はありませんeagerly.Soすべてのリレーショナル・オブジェクトを取得します。(あなたはいつもあなたが熱心な怠惰は、フェッチ/フェッチするかどうかを指定することができます)

4.Thereモデルインスタンスを引数として渡すことができる場所を保存、更新、削除するメソッドです

時間の経過と共に成長するJava EEプロジェクトを作成し、書き込みから時間を節約したい場合は余分なクラスは、あなたがHibernateのために行くことができます。これは私の小さな経験からです。しかし、あなたが休止状態で行うことができるより多くがあります。休止状態のドキュメントを参照してください

0

"どちらか"の状況ではありません。 Hibernateに加えて興味深いものがたくさんあります。ORM solutions特にDB集約型のアルゴリズムを使用していない限り、パフォーマンスについての心配はありません。学習曲線とソースコードの保守性を考慮する必要があります。sormula

関連する問題