Hibernate中的get与load有什么区别?

来源:互联网 发布:数据库建模软件 bs 编辑:程序博客网 时间:2024/06/06 08:35



学校学习版:

1、get是立即加载,load是延迟加载;

2、查询不到数据的时候,get返回null,load抛异常;

3、get默认立即加载(返回非代理对象),load默认是延迟加载(返回代理对象);

4、在hibernate实体映射文件中可修改lazy属性的值来改变load方法的加载方式(lazy=“false”关闭延迟),对get无效;

5、代理对象:只有oid(对象标示符)属性有值,第一次访问非oid属性时会访问数据库加载其他属性,如果此时session已关闭,则会报错。



大神版本:

1、找不到符合条件的数据,get()方法将返回null。load()将会报出ObjectNotFoundEcception。
2、get()方法直接返回实体类。load()方法可以返回实体的代理类实例。
3、get()方法只在内部缓存中进行查找。load()方法可以利用二级缓存和内部缓存的现有数据。

4、get方式马上发出sql。load在默认情况下支持延迟加载(lazy)



1 0