hibernate中load( )方法和get( )方法的区别

根本区别:hibernate中对于load()方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而get()方法,hibernate一定要获取到真实的数据,否则返回null;
①get()方法:会先确认id对应的数据是否存在,如果不存在,就返回null;
②load()方法:会先认定id对应的数据一定存在,会先在session的一级缓存中去查找,如果没有找到,会根据lazy属性值来确认是否使用延迟加载,如果lazy=‘true’,就是使用延迟加载,返回该代理对象,等到真正访问到该对象的属性时才去二级缓存中查询,如果没有,再取数据库中查询,如果还没有的话,就抛出org.hibernate.ObjectNotFoundException异常。如果lazy='false' 则不使用延迟加载,这是load的访问机制就和get一样了;

原文地址:https://www.cnblogs.com/xie-qi/p/12873241.html