直接上干货:
我们在Hibernate中使用的检索方式有以下五个:
- 导航对象图检索;
- OID检索;
- HQL检索;
- QBC检索;
- 本地SQL检索;
实例:
导航对象图检索:
如果说我们在对象-关系映射文件上配置了它们的一对多的关系,那么我们就可以使用
School school = (School)session.get(School.class,1);
List<Student> students = school.getStudents();
这样的方式获取多方数据或者是一方数据,即所谓的导航。
OID检索
主要是指用Session中的的get()和load()方法加载数据,
get():
- 不支持延迟加载即执行get()方法的时候就发Select语句
- 当在数据库中查不到记录的时候不会抛出异常,会返回一个null
- 支持延迟加载即需要用到记录数据的时候在发Select语句
- 当在数据库中查不到记录的时候会抛出ObjectNotFoundException异常
HQL检索
HQL是面向对象的查询语言,他和SQL查询语言存在很大程度的相似,是使用最多的一种检索方式。
QBC检索
QBC查询是在HQL查询基础上的一个简化,他将具体的查询语句书写全部都交给Java来实现,而在Java编程中则是主要设置参数
本地SQL检索
这个就不用说了,所有的查询最终都归结于SQL,但是使用纯SQL模式也有他特定的用途,当我们使用数据的方言的时候,HQL和QBC将显得捉襟见肘,但是源生SQL无法实现通用以及编程繁琐也是其弊端。