У меня есть 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();
}