Hibernate代理生成

Bha*_*sht 5 java hibernate proxy-classes

我正在浏览hibernate的文档并找到了这些行

无参数构造函数是所有持久化类的要求; Hibernate必须使用Java Reflection为您创建对象.构造函数可以是私有的,但是运行时代理生成和无需字节码检测的高效数据检索需要包或公共可见性

任何人都可以解释运行时代理生成和有效的数据检索,无需字节码指示

Jan*_*ník 5

运行时代理意味着 Hibernate 将使用 Proxy 类包装您的类。您可以在调试器中看到,实例化对象不是您的类型,而是某个代理类型。

为此,Hibernate 需要覆盖您的类。调用base()构造函数需要无参数构造函数。Hibernate 不知道如何填充您的自定义参数。另一种想法是制作所有属性和方法,virtual以便它们也可以被覆盖。

把它想象成你有第三方库(一个包含你的持久类),现在你需要向它们添加一些通用功能,而无需阅读文档并逐个类、逐个属性地分析类。