データベースの「更新」のパフォーマンスを、古い方法と Hibernate を使用して比較しています。
これは私のデータベース構造です: Document -> Code -> Code_Details. 親テーブルと子テーブルの間には 1 対多の関係があります。
現在、データベースで更新する必要がある約 850 の Code_Details エントリがあります。
以下は従来の方法で、パフォーマンスが 2 倍高速です。
public void executeDBUpdate(int status1, int status2, int status3){
...
...
java.sql.Statement statement = connection.createStatement();
statement.executeUpdate("update Code_Details set status1="+status1+", status2"+=status2+", status3="+status3");
...
}
以下は休止状態のバージョンです。
public void executeDBUpdate(int status1, int status2, int status3){
...
...
Query query = session.createQuery("update Code_Details set status1=:status1, status2=:status2,status3=:status3);
query.setParameter("status", status_);
query.setParameter("status1",status1);
query.setParameter("status2",status2);
query.setParameter("status3",status3);
query.executeUpdate();
HibernateUtils.commitTransaction("emscribedx");
...
}
両方のバージョンで、各データベース更新を実行するために「executeDBUpdate(int,int,int)」メソッドが 850 回呼び出されていることに注意してください。
古い方法で 850 回の更新を実行する合計時間は次のとおりです。
954 milliseconds
Hibernate で同じ 850 回の更新を実行する合計時間は次のとおりです。
1979 milliseconds
私はそれを分解し、Hibernate バージョンのほとんどの時間で "query.executeUpdate()" -> 954 ミリ秒と "hibernateTransaction.commit()" - > 750 ミリ秒を費やしていることに気付きました。
多数の更新を実行するときに Hibernate のパフォーマンスを向上させるにはどうすればよいですか?