私はパフォーマンスの改善に取り組んでいます。私たちはHibernate CriteriaとNamed Queryの両方を使用してデータベースからデータを取得しています。 私たちのアプリケーションでは、データベースからより多くの行を取得してJavaロジックを実行していますので、データベースからネットワークへのトリップを避けるために、データベースから一度に多くの行をフェッチしたいと考えています。 oracleデータベースのデフォルトのフェッチ・サイズが10であるため、次のように基準オブジェクトに対してこれを400に設定しました。Hibernate criteria.setFetchSizeが期待どおりに動作しない
Criteria crit = getSession().createCriteria(Phone.class);
crit.setFetchSize(400);
私は応答時間の改善に気付きませんでした。 以下のようにNamedQueryでフェッチサイズを高く設定したときに改善が見られました。
Query query = session.getNamedQuery("getPhoneList");
query.setFetchSize(400);
crit.setFetchSize(400);
が期待どおりに機能しない理由を教えてください。
あなたはデシベルにTCPトラフィックを検査しようとすることができますたとえば、Wiresharkを使用して、フェッチサイズを設定する前後に何が起こるのかを理解しようとする(setFetchSizeが "ネットワークトリップ"にどのように影響するかを理解するため)。 –