Почему Hibernate.getClass () использует getImplementation () вместо getPersistentClass ()? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть HibernateProxy, который я хотел бы найти класс реализации.

Hibernate.getClass() кажется очевидным выбором, но внутренне он делает это:

public static Class getClass(Object proxy) {
  return proxy instanceof HibernateProxy ? ((HibernateProxy)proxy).getHibernateLazyInitializer().getImplementation().getClass() : proxy.getClass();
}

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

Поскольку эта функция возвращает только класс, не будет ли разумнее сделать что-то вроде этого:

public static Class getClass(Object proxy) {
  return obj instanceof HibernateProxy ? ((HibernateProxy)obj).getHibernateLazyInitializer().getPersistentClass() : obj.getClass();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...