Hibernate3の処理性能を,JDBCベースで自作した場合と比較した。
注目すべきは更新処理の性能で,JDBCより応答時間が約40%短縮。
一方,削除処理は,JDBCより約3倍もの時間がかかった。
Hibernateの設定を変えることで,参照処理性能は2倍以上になった。
オープンソースのO-Rマッピング・ツール「Hibernate(ハイバネート)」の実力を検証した。JDBC(Java Database Connectivity)ベースで自作したデータベース・アクセス・プログラムと処理性能を比較したところ,挿入処理の性能はほぼ互角。更新処理はHibernateが優れ,参照処理と削除処理はJDBCが優れている結果になった(図1[拡大表示])。今回の検証実験では最新版のHibernate3と,参考までにHibernate2で測定した。
自動生成されるSQL文を検証
O-Rマッピング・ツールとは,Javaプログラムなどのオブジェクト(Object)とリレーショナル・データベース管理システム(RDBMS)のレコードを対応付け(マッピング)するとともに,データベースを操作するためのSQL文を自動発行するソフト(図2[拡大表示])。Hibernateは,Java言語で利用できるO-Rマッピング・ツールの代表と言える。通常Javaアプリケーションを開発する場合,データベースにアクセスするために,Javaのコードの中にSQL文を記述する必要がある。Hibernateを使えば,このデータベース・アクセスのためのコードの記述量が減り,開発効率の向上が期待できる。
一方で,基本的にプログラマがSQL文をコーディングしないので,処理性能の面で不安がある。Hibernateによって自動生成されるSQL文が不適切であれば,処理性能は低くなるからだ。
そこで,Hibernate の処理性能を検証することにした(検証(1))。比較対象は,Hibernateを使わずに,SQL文を開発者がコーディングする場合である。また,Hibernateのチューニングも試みた(検証(2))。
検証(1)では,参照,更新,削除,挿入の各処理にかかる時間を測定。テーブル構成は3パターン用意した(図3[拡大表示])。(1)