1

JPA の Hibernate 実装を使用し、Spring データソースを使用してそれらのリソースを管理する場合、EntityManager セッションはいつ閉じられますか? たとえば、Spring DAO レイヤー (@repository) を呼び出す Spring サービス レイヤーを含む以下の基本パターンがあります。DAO リポジトリは、PersistentContext の EntityManager を自動配線し、DB 操作を実行します。私の質問は、getData Service メソッドが終了した後、EntityManager セッションが閉じられるのはいつですか? 休止状態のL1キャッシュがどれくらいの期間存在するかを確認しようとしており、EntityManagerセッションに直接関連付けられているため、この質問をしています...

@Service
public class TestService{
@Autowired
private dataDAO;
@Transaction
public List getData(Long id){
    return dataDAO.getDate(id);
}
}
4

1 に答える 1

3

デフォルトでは、Spring はトランザクションの最後にセッションを解放します。この場合、セッションはgetDataメソッドの最後に解放されます。第 1 レベルのキャッシュ (L1) は実際のトランザクションにバインドされ、トランザクションが終了するとすぐにクリアされます。

于 2013-07-09T20:38:34.613 に答える