@BatchSize(size=N) на entity или collection: вместо N отдельных запросов SELECT * FROM items WHERE id IN (batch of N). Отличный способ решить N+1 без JOIN FETCH — когда данные нужны не всегда или для каждой коллекции в отдельности. @Fetch(FetchMode.SUBSELECT): загружает всю коллекцию одним subselect запросом SELECT * FROM items WHERE order_id IN (subselect for all order ids). SUBSELECT хорош когда нужны все коллекции сразу. JOIN FETCH даёт один запрос но Cartesian product для нескольких коллекций.
Что такое @BatchSize и @Fetch в Hibernate — когда применять?
Senior
258 просмотровAFK Offer AI
Реализуйте паттерн Decorator на Java