试题详情
- 简答题试述load()和get()的区别。
-
1.从返回结果上对比:
L.oad方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常get方法检索不到的话会返回null
2.从检索执行机制上对比: get方法和find方法都是直接从数据库中检索 而load方法的执行则比较复杂首先查找session的persistent Context中是否有缓存,如果有则直接返回 如果没有则判断是否是lazy,如果不是直接访问数据库检索,查到记录返回,查不到抛出异常 如果是lazy则需要建立代理对象,对象的initialized属性为false,target属性为null 在访问获得的代理对象的属性时,检索数据库,如果找到记录则把该记录的对象复制到代理对象的target上,并将initialized=true,如果找不到就抛出异常。
H.ibernate对于 load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。 关注下方微信公众号,在线模考后查看
热门试题
- Hibernate中怎样实现类之间的关系
- 下面关于Hibernate中Transa
- 简述Hibernate中find和ite
- 在Hibernate中,
元素有 - 下面()不属于关系-对象映射的映射信息。
- 对下面代码中存在的错误,说法不正确的是(
- 组有没有length( )这个方法? S
- 下列关于延迟加载说法正确的是()
- Struts的validate框架是如何
- 在Hibernate中,下面的程序代码对
- 在Hibernate中,关于Criter
- 在Hibernate的HQL查询中,有数
- 在Hibernate的HQL查询中,下列
- 以下检索策略中,()利用了外连结查询
- A_oe和A_hr是数据库中的2个用户,
- 一般情况下,关系数据模型与对象模型之间有
- 启动一个线程是用run( )还是star
- 下面代码的执行效果是()
- 在Hibernate映射文件的ID的配置
- 在使用了Hibernate的系统中,要想