关于Hibernate的session的load方法
session的load方法,Usersuser=(Users)session.load(Users.class,userId);load支持延迟加载,get不支持延迟加...
session的load方法,Users user = (Users)session.load(Users.class, userId);
load支持延迟加载,get不支持延迟加载。延迟加载就是只有在访问延迟加载对象的具体属性(getClass,getId除外)时才会去与数据库交互。在执行load语句时并没有与数据库交互,而是返回一个代理对象。
既然getId除外,那么代理对象的userId是怎么来的?从数据库中查询而来的?还是自动生成的? 展开
load支持延迟加载,get不支持延迟加载。延迟加载就是只有在访问延迟加载对象的具体属性(getClass,getId除外)时才会去与数据库交互。在执行load语句时并没有与数据库交互,而是返回一个代理对象。
既然getId除外,那么代理对象的userId是怎么来的?从数据库中查询而来的?还是自动生成的? 展开
5个回答
展开全部
代理对象就是 查询部分数据 等需要详细的数据的时候在查询 举个例子 比如select * from 表
代理对象就是只查出对应的id 然后你需要某一个属性的时候再查 select id from 表 然后你需要取di=5的时候在发送 select * from 表id=5.你把sql语句打开啊 这样每次用hibenate的时候都知道是怎么回事
代理对象就是只查出对应的id 然后你需要某一个属性的时候再查 select id from 表 然后你需要取di=5的时候在发送 select * from 表id=5.你把sql语句打开啊 这样每次用hibenate的时候都知道是怎么回事
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Users user = (Users)session.load(Users.class, userId);
这里你传入了userId,既然没有发出sql,我觉得应该从这里获得的。
这里你传入了userId,既然没有发出sql,我觉得应该从这里获得的。
追问
我听说会返回代理对象的OID,但是这个代理对象的OID是不是就是这个load方法里的userId呢?
追答
应该是,要不没其他地方可以获得。将userId设置为表里面根本不存在的id,getId还是能返回这个值,而且又没有发sql。说明这时候只是建立一个代理,还跟数据库没有任何交互。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肯定是从数据库里面查询的啊。你又没有用save()或update(),不会自动生成的。你查询的userid是数据库里保存的已经 存在的对象的id。谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从数据库中查询而来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询