Spring データ JPA を操作し、このメソッドを @Service クラスに持つ
@Transactional(propagation = Propagation.NEVER)
public void getClientBydIdThreeTimes() {
clientRepository.findById(1L);
clientRepository.findById(1L);
clientRepository.findById(1L);
}
- データベースに 3 回ヒットしますか? トランザクション環境 (propagation = Propagation.NEVER) がなく、各クエリがトランザクション自体であるため、クエリが実行されるたびに、独自の永続的なコンテキストを持つ entityManager が作成されるため、そうすべきではありません。
- http リクエストを作成してこのメソッドを実行すると、次の 2 つの呼び出しをキャッシュするデータベースに最初のクエリのみが送信されますが、アプリケーション内からこのメソッドを呼び出すと (Spring バッチ タスクのように)、奇妙な動作が発生します。 、データベースに送信される 3 つの sql があります。私はそれを理解していません。同じ動作をするはずですよね?
ありがとう