こんにちは私はwhenリクエストが配列に付属しているアプリケーションを持っています私はテーブルからデータを選択する必要があり、見つからない場合は新しい値を生成してテーブルに挿入し、次に再びループ統計をチェックして次の値をチェックします。これは、新しいリクエストに対して約50000回実行されます。
使ってます
public void save(Object obj,Session session) {
Transaction tx = null;
try {
tx = session.beginTransaction();
session.save(obj);
//session.saveOrUpdate(obj);
//session.flush();
session.clear();
tx.commit();
}
catch (HibernateException e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
if(tx!=null){
tx.rollback();
}
}
}
コミットするメソッドであり、生成された新しい値ごとに呼び出されます。リクエストごとに50000回呼び出されます。テーブルに重複する値を生成したくないので、値ごとにトランザクションをコミットする必要があります。したがって、新しいリクエストに同じデータが含まれ、前のリクエストが実行されている場合は、値をテーブルからフェッチする必要があります。したがって、各トランザクションをコミットする必要があると思います。しかし、従来のJDBCを使用し、休止状態にしない場合、これは非常に高速になります。私は何か間違ったことをしていますか?それと比較して休止状態は遅いですか?原因私はほとんどの時間がトランザクションの開始とコミットに何度も費やされていると思います。