我知道代理对象是:
代理是一种机制,它允许Hibernate将数据库中互连的对象云分解成更小的块,这些块可以很容易地放入内存中。
答案 0 :(得分:3)
Hibernate使用javassist创建动态代理而不是具体实体来填充引用其他持久实体(或持久实体集合)的获取实体的字段。
(请注意,如果您将关系标记为急切获取:hibernate不会创建代理但是具体实体。这不是默认值)
javassist优于standard dynamic proxy mechanism的一个主要优点是它允许在具体类上创建动态代理,而不仅仅是接口。
代理的责任是透明地执行"需要时的数据库读取操作(即,当需要访问代理实体时)
代理和一级或二级缓存并不是真正相关的概念。我们可以说,如果你试图解决"当持有它的实体没有附加到开放会话时(即,当持有它的实体不在第一级缓存中时)它会引发一个LazyInitializationException(因为没有办法执行数据库)在这种情况下阅读)