据我所知,创建一个动态Java代理需要一个接口来处理该代理。但是,Hibernate似乎可以管理其动态代理生成,而无需为实体类提供一个写接口。它是如何做到的?Hibernate文档的唯一线索是这样的事实,即类必须至少具有一个包可见的构造函数才能生成代理。
Hibernate是否使用自定义类加载器进行运行时字节码工程设计?该文档表明情况并非如此。那么他们如何围绕具体实体对象创建代理包装器呢?他们是否只是创建一些琐碎接口的代理而不关心类型安全性,然后根据需要进行转换?
从Hibernate 3.3开始,默认的字节码提供程序现在是Javassist而不是CGLib。
Hibernate Core迁移指南:3.3