Рубрики
Без рубрики

Высокопроизводительная сохраняемость Java – Глава 15 – Очаровательный

Автор оригинала: Vlad Mihalcea.

Каждая новая глава моей книги выходит сразу после ее завершения, поэтому читателю не нужно ждать, пока вся часть будет закончена, чтобы получить доступ к новому материалу.

В этой главе объясняется, как выборка работает в режиме гибернации.

15. Fetching              
15.1 DTO projection          
15.1.1 DTO projection pagination         
15.1.2 Native query DTO projection       
15.2 Query fetch size           
15.3 Fetching entities          
15.3.1 Direct fetching          
15.3.1.1 Fetching a Proxy reference      
15.3.1.2 Natural identifier fetching        
15.3.2 Query fetching           
15.3.3 Fetching associations          
15.3.3.1 FetchType.EAGER           
15.3.3.2 FetchType.LAZY         
15.3.3.2.1 The N+1 query problem         
15.3.3.2.2 How to catch N+1 query problems during testing  
15.3.3.2.3 LazyInitializationException      
15.3.3.2.4 The Open Session in View Anti-Pattern     
15.3.3.2.5 Temporary Session Lazy Loading Anti-Pattern  
15.3.3.3 Associations and pagination        
15.4 Query plan cache           

Извлечение данных оказывает большое влияние на производительность уровня доступа к данным, а извлечение слишком большого объема данных является одной из наиболее распространенных проблем, связанных с производительностью. В этой главе я объясню, когда следует использовать выборку сущностей и когда переключаться на проекции.

Существует также очень интересный пример, демонстрирующий, почему иногда обработка данных в базе данных (рекурсивный CTE, оконные функции) может превосходить обработку данных на уровне приложений.

Тип выборки . НЕТЕРПЕЛИВЫЙ часто является хорошим намеком на то, что у приложения могут возникнуть проблемы с производительностью. Но Тип выборки. ЛЕНИВЫЙ тоже не без проблем, потому что это может привести к N+1 проблемам с запросами The FetchType.EAGER is often a good hint that an application might experience performance issues. But FetchType.LAZY

К сожалению, существуют также некоторые широко распространенные анти-шаблоны, такие как Открытая сессия в поле зрения или Временная ленивая загрузка сеанса , которые устраняют симптомы и не устраняют основную причину исключения LazyInitializationException .

Менее известной конфигурацией является кэш плана запросов, и вы также узнаете, как его можно настроить и для каких запросов имеет смысл сохранить этап предварительной компиляции.

Наслаждайтесь чтением Высокопроизводительной Сохраняемости Java !

P.S. Существует также группа Google , посвященная этой книге, поэтому, если вы хотите присоединиться и обсудить содержание книги, не стесняйтесь присоединиться.