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