1、Hibernate中Session的find、get、load方法的对比:sql
find()方法是hibernate2中的方法,在现有的hibernate3中已经不提倡使用它。如今提倡使用session.createQuery()建立一个query对象。session
example:String hql = “from xxx where xxx …”;spa
List ls = session.find(hql,new Integer(x),Hibernate.INTEGER); hibernate
get()方法和find()方法在类级别的检索时老是会执行当即检索的,而无论咱们在hibernate配置文件中是否对该类定义使用lazy(懒加载);当检索不到相关的对象时,这两种方法都会返回NULL.orm
Load方法在进行类级别的检索时,若是该类在hibernate的配置文件中并无定义检索策略(延迟检索),那么和get方法和find方法同样都是默认当即检索。可是当检索不到相关的对象时,load方法会抛出一个异常:ObjectNotException,若是在配置文件中对于该类添加了Lazy属性后,使用load方法就会变成懒加载了。程序在执行到Student stu = session.load(Student.class)时并不会发送sql语句,只有在调用stu.getName()方法时才会去发送sql语句查询。而get和find都是在执行到session.get\find()时发送SQL语句。对象