分享

hibernate加载方法 - 在路上的日志 - 网易博客

 yanjj 2010-10-30
1. get和load区别
load加载方法:
Java代码
Users user = (Users)session.load(Users.class, new Integer(1)); 

Users user = (Users)session.load(Users.class, new Integer(1));

get加载方法:
Java代码
Users user = (Users)session.get(Users.class, new Integer(1)); 

Users user = (Users)session.get(Users.class, new Integer(1));

以上面代码为例:

区别一:如果没有id为1的Users对象,那么,如果通过get方法加载,则返回的是一个null,如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException

区别二:load支持延迟加载,get不支持延迟加载
也就是说:Users user = (Users)session.load(Users.class, new Integer(2));这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询,而Users user = (Users)session.get(Users.class, new Integer(1));则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, new Integer(2));不会执行任何sql.
缓存加载--get支持一级缓存。load支持二级缓存。不查询数据库只是到缓存中提取数据。缓存没有然后转至数据库。load 一级转二级然后至数据库,数据变化小性能会高些。

延迟加载是在提取关联对象的时候才有效果!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多