Спящий двунаправленный запрос - PullRequest
0 голосов
/ 06 июня 2011

У меня есть вопрос, касающийся двунаправленного режима гибернации. Допустим, у меня есть 2 класса, Class A и Class B и двунаправленные. Это означает, что когда я запрашиваю Class A, я также могу получить Class B и наоборот. Мой вопрос, как работает Hibernate, когда я делаю это

ClassA classA = ClassA.findClassAById(1);
ClassB = classA.getClassB().getClassA().getClassB();

Я знаю, что могу получить ClassB всего за classA.getClassB();, но я также могу получить classA.getClassB().getClassA().getClassB().getClassA().getClassB()...;

Может кто-нибудь объяснить мне, как спящий режим работает с двунаправленным запросом?

Я беспокоюсь о производительности.

1 Ответ

0 голосов
/ 03 ноября 2011

Hibernate использует эффективный кэш первого уровня, также известный как PersistantContext Если объект загружается в контексте, hibernate не попадает в базу данных, чтобы получить тот же объект.Постановка проблемы, когда findClassAById(1) вызывается classA объект загружается в контексте постоянства.classB объект загружается одновременно или позже, в зависимости от принятой стратегии отложенной загрузки.После чего к базе данных не следует подходить идеально для всех будущих вызовов.

Вы можете очень хорошо зайти в Google Persistance Context для получения дополнительной информации о том, как она работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...