首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法理解hibernate中的会话

无法理解hibernate中的会话
EN

Stack Overflow用户
提问于 2011-12-27 17:06:14
回答 1查看 128关注 0票数 2

当load被调用时,Hibernate会检查对象是否已经包含在会话中。如果为真,则返回该对象,否则将创建代理。

Session用于与数据库交互,当在load方法中传递对象时,它是如何包含对象的。那么在使用代理的地方又如何呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-27 21:21:35

代理只是一个包裹在真实对象周围的封套。当您调用session.load(Person.class, 3)时,Hibernate将检查ID为3的人员是否已经在会话缓存中。如果不是,它将创建一个代理,将其存储在会话缓存中,并返回它。代理是一个工作方式如下的类:

代码语言:javascript
复制
public class PersonProxy extends Person {
    private int id;
    private boolean initialized = false;

    public String getName() {
        if (!initialized) {
            // read state of the entity from database;
            initialized = true;
        }
        return this.name;
    }

    ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8642821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档