首先,get()与load()方法都能实现查询数据库的操作,但两者还是有区别,下来浅谈它们在执行过程中的区别。
一、当程序调用get()方法时,hibernate发送sql语句对数据库进行查询,之后数据库将查询结果返回给hibernate框架,hibernate将结果封装到具体的实体bean中,然后再将实体对象返回给程序。
二、当程序调用load()方法时,hibernate框架会使用代理技术创建一个代理对象,这个对象的属性只有id有值,然后将这个代理对象返回给程序,注意这时候并没有立即查询数据库,而当我们使用代理对象时,代理对象就会使用hibernate中的Session查询数据库,并初始化属性。
总结,当调用get()方法时立刻发送sql语句进行查询,而当调用load()方法时不会立即查询数据库,只有需要使用该对象时才会对数据库进行查询,这样设计能提高效率,即延迟加载。