Спящие объекты и отражение Java - PullRequest
2 голосов
/ 19 сентября 2011

Я лениво загружаю объект из спящего режима, используя следующую строку кода Object object = session.load(Class.forName(javaType), objectId);

Если я печатаю object.getClass().getSimpleName(), он отображает имя прокси-сервера hibernate, а не мой класс реализации, как ожидалось.

Однако, если я затем использую отражение на этом прокси-объекте, чтобы возвратить атрибут с именем children следующим образом: List children = (List) object.getClass().getMethod("getChildren", new Class[ {}).invoke(object, new Object[]{});

Возвращает список объектов, где object.getClass().getSimpleName() для любого из объектов возвращает имя класса реализации. Почему эти объекты не возвращают имя прокси-объекта?

1 Ответ

0 голосов
/ 19 сентября 2011

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

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