休眠代理对象包含什么?
我能从谷歌收集到的只是:
休眠使用代理对象来实现延迟加载。当我们请求从数据库中加载 Object 时,并且获取的对象具有对另一个具体对象的引用,Hibernate 将返回代理而不是具体的关联对象。
Hibernate 使用字节码检测(由 javassist 提供)创建一个代理对象。Hibernate 使用代码生成库在运行时创建实体类的子类,并将实际对象替换为新创建的代理。
那么,代理对象究竟包含什么呢?
它是否包含仅设置了 id 字段的框架对象引用对象?其他字段将在我们调用 get 方法时设置?
Proxy 对象是否包含 JDBC 语句以提取完全填充被引用对象所需的所有数据。
我可能还错过了什么吗?
我不是要求勺子喂食,但如果你能提供任何信息链接,那就太好了。
也欢迎对上述描述进行任何更正。
例。
class Address {
String city;
String country;
}
class Person{
int id;
String name;
Address address;
}
当我们尝试加载 Person 对象时,Hibernate 将子类 Person 类,如下所示:
class ProxyPerson extends Person {
int id;
String name;
Address proxyCGLIBObject;
}
并返回一个 ProxyPerson 对象。ProxyPerson 的对象将具有 id 和 name 的值,但对 Address 具有代理。
我说的对吗?
在代理对象上添加 toString() 方法可以期待什么?