Насколько мне известно, создание динамического Java-прокси требует, чтобы у него был интерфейс для работы с прокси. Тем не менее, похоже, что Hibernate управляет динамической генерацией прокси, не требуя написания интерфейсов для классов сущностей. Как оно работает? Единственная подсказка из документации Hibernate относится к тому факту, что классы должны иметь как минимум конструктор, видимый пакетом, для генерации прокси.
Hibernate выполняет разработку байт-кода во время выполнения с помощью специального загрузчика классов? Документация предполагает, что это не так. Так как же они создают свои прокси-оболочки вокруг конкретных объектов сущностей? Они просто создают прокси некоторого тривиального интерфейса, не заботясь о безопасности типов, а затем приводят его по желанию?