hibernate中get和load有什么区别呢?

[复制链接]
查看11 | 回复3 | 2017-9-14 20:48:09 | 显示全部楼层 |阅读模式
越详细越好,给分
3楼的说的还算详细,但为什么要有个代理对象呢?它的作用又是什么呢?

回复

使用道具 举报

千问 | 2017-9-14 20:48:09 | 显示全部楼层
get 是当你调用get的时候就去操作数据库load不一样 当使用session中的load方法查询数据库中的记录时,我们返回的是一个代理对象,而不是真正需要的那个对象;例如数据库中存有个Student表,我们有cn.binyulan.doman.Student的领域对象,如果查询Id值为“200626313”的Student stu = (Student)session.load(Student.class,"200626313"),然后我们打印System.out.println(stu.getClass);得到的结果为Student$$EnhancerByCGLIB$$5a7cc325,名字很奇怪吧,这个对象是Hibernate帮我们生成
回复

使用道具 举报

千问 | 2017-9-14 20:48:09 | 显示全部楼层
session.get()方法 直接发出sql查询语句session.load()方法 当你使用对象的时候 才真正发出sql查询语句
回复

使用道具 举报

千问 | 2017-9-14 20:48:09 | 显示全部楼层
当没有时候,get会抛异常,而load 不会
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行