Теперь существует особая проблема, связанная с этим. И это печально известное исключение LazyInitialization. По сути, вам нужно инициализировать все ленивые ассоциации, пока сущности привязаны к контексту постоянства. Два способа сделать это:
- Доступ к отношениям вручную для принудительной загрузки.
- Используйте запрос, определяющий выборку соединения.
Эти два подхода приводят к совершенно разным частям кода, поэтому переход с одного на другой может быть довольно сложной задачей. Проблема заключается в том, что подход 1. приводит к большому количеству запросов, когда не используется кэш 2-го уровня, поэтому люди могут решить использовать подход 2, что приводит к запросам на повышение температуры. Однако, когда вы включаете кэш 2-го уровня позже, запросы из подхода 2 не загружают данные из кеша, а помещают в него результирующие сущности, делая выполнение запроса медленнее, чем без кеша. Это приводит к сложным вещам, таким как необходимость использовать кеш запросов.
Из-за этого мне кажется более подходящим (в данном конкретном случае) включить кеш сначала для всех сущностей, что обычно тривиально, а затем отключить его для сущностей, в которых он не нужен по мере разработки ,