Hibernate代理对象包含什么内容?
- 论坛
- Hibernate代理对象包含什么内容?
6 浏览
Hibernate代理对象包含什么内容?
从谷歌上我能找到的只有这些信息:
- Hibernate使用代理对象来实现延迟加载。
当我们请求从数据库加载对象时,如果获取到的对象有一个对另一个具体对象的引用,Hibernate会返回一个代理而不是关联的具体对象。
- Hibernate使用字节码增强(由javassist提供)来创建代理对象。Hibernate在运行时使用代码生成库创建我们的实体类的子类,并用新创建的代理对象替换实际对象。
那么,代理对象具体包含什么呢?
它是否包含一个只有id字段设置的骨架对象引用对象?其他字段在调用get方法时才会设置吗?
代理对象是否包含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()方法,我可以期望得到什么?