В этом приложении мы разрабатываем, мы заметили, что представление было особенно медленным. Я профилировал представление и заметил, что был один запрос, выполненный спящим ходом, который занял 10 секунд, даже если в базу данных были только два объекта. Все отношения OneToMany
и ManyToMany
были ленивыми, так что это не проблема. При проверке фактического выполнения SQL я заметил, что в запросе было более 80 объединений.
Дальнейшая проверка проблемы, я заметил, что проблема была вызвана глубокой иерархией отношений OneToOne
и ManyToOne
между классами сущностей. Итак, подумал я, я просто сделаю их ленивыми, что должно решить проблему. Но аннотация для @OneToOne(fetch=FetchType.LAZY)
или @ManyToOne(fetch=FetchType.LAZY)
не работает. Либо я получаю исключение, либо они фактически не заменяются прокси-объектом и, следовательно, ленивы.
Любые идеи, как я получу это для работы? Обратите внимание, что я не использую persistence.xml
для определения отношений или деталей конфигурации, все делается в Java-коде.