1
Criteriaが作成され、が空でないことを選択したとします。値リスト。その後、criteria.list().get(0)
が呼び出され、いくつかの関数から戻ります。この要素がさらなるコールチェーンに存在することは明らかですが、他のリスト要素はどうですか?彼らはいつ再評価されますか?休止状態のセッションが終了するか、いつですか?いつ休止状態のエンティティのリストを解放しますか?
Criteriaが作成され、が空でないことを選択したとします。値リスト。その後、criteria.list().get(0)
が呼び出され、いくつかの関数から戻ります。この要素がさらなるコールチェーンに存在することは明らかですが、他のリスト要素はどうですか?彼らはいつ再評価されますか?休止状態のセッションが終了するか、いつですか?いつ休止状態のエンティティのリストを解放しますか?
あなたがSession
ないStatelessSession
を使用していると仮定すると、L1キャッシュは、いくつかの条件でクリアされます。
session.clear()
がアクティブsession
インスタンスで呼び出された場合。エンティティインスタンスをsession.evict(Object object)
に渡すことで、特定のエンティティを管理するオープンsession
で個別に管理対象エンティティのインスタンスをクリアすることもできます。
なぜ最大で1レコードしか選択しないのですか?トランザクションが終了しエンティティが切り離されると、それらはメモリから解放されます。 – tak3shi
長時間実行しているセッションやメモリキャッシュを使用していますか? – tak3shi
「なぜあなたは1レコードの最大値だけを選択していないのですか」あなたは絶対に正しいですが、質問は「ベストプラクティス」ではなく「どのように動作するのか」ではありません。 :) – Cherry