Что такое @BatchSize и @Fetch в Hibernate — когда применять?

Senior
258 просмотров
AFK Offer AI

@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 для нескольких коллекций.

Следующий вопрос

Реализуйте паттерн Decorator на Java