Hibernate JDBCでバッチ処理
2008/11/11 11:31Update
Hibernateでは、データの更新や挿入、削除などを行うとき、Session.save(...)やSession.delete(...)、Session.update(...)などのメソッドがありますが、大量のデータ(バッチ処理)の場合、OutOfMemoryExceptionを起こったり、効率を低下しまったりすることがあります。
こうした処理の場合、session.flush()やsession.clear()を使って、ある程度のパフォーマンスの改善ができますが、JDBCに比べ性能的には大幅に劣ることも確かめられています。
本文はHibernateでJDBCの使い方について学びます。
1)org.hibernate.Sessionからjava.sql.Connectionを取得
2)ConnectionからPreparedStatement オブジェクトやStatement オブジェクトを生成
または
3)SQLの実行
Connection (Java 2 プラットフォーム SE v1.4.0)
Hibernate HQLで insert/update/delete
本文はHibernateでJDBCの使い方について学びます。
手順
1)org.hibernate.Sessionからjava.sql.Connectionを取得
Session session = ...; Connection connection = sess.connection();
2)ConnectionからPreparedStatement オブジェクトやStatement オブジェクトを生成
PreparedStatement preparedStatement = connection.prepareStatement(sql);
または
Statement statement = connection.createStatement();
3)SQLの実行
statement.executeUpdate(sql);
サンプル
//sql例: DELETE FROM some_table
//INSERT... SELECT ...
public static void testJdbcConnection(Session sess, String sql) {
//java.sql.Connection
Connection connection = sess.connection();
Transaction tr = sess.beginTransaction();
try {
//パラメータ付き SQL 文
//PreparedStatement preparedStatement = connection.prepareStatement(sql);
//preparedStatement.setString(0, "value");
//preparedStatement.executeUpdate();
Statement statement = connection.createStatement();
statement.executeUpdate(sql);
tr.commit();
} catch (SQLException e) {
tr.rollback();
}
}
参考資料
Connection (Java 2 プラットフォーム SE v1.4.0)
Hibernate HQLで insert/update/delete
Sponsored Link
Comments
- Relative Articles
- Hibernate設定ファイルその1 - hibernate.cfg.xml - (2008/07/09 14:08)
- Hibernate c3p0 - よく利用されているコネクションプーリング - (2008/07/09 15:00)
- Hibernate 方言(Dialect)一覧 - (2008/07/09 15:10)
- Hibernate のSessionとSessionFactory - (2008/07/09 15:51)
- ThreadLocal でHibernate Session を効率的に管理する - (2008/07/09 18:43)
- Hibernateで複数のDBに接続するには? - (2008/07/09 18:47)
- Hibernateとは - (2008/07/11 14:23)
- Hibernate のインストール - (2008/07/24 11:01)
- Hibernate の開発手順 - (2008/07/24 12:44)
- Hibernate SQLをログに出力方法 - (2008/07/30 16:06)