欢迎来到天天文库
浏览记录
ID:52439600
大小:114.50 KB
页数:12页
时间:2020-03-27
《Hibernate常见面试题汇总.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一. Hibernate工作使用步骤?1. 读取并解析配置文件2. 读取并解析映射信息,创建SessionFactory3. 打开Sesssion4. 创建事务Transation5. 持久化操作6. 提交事务7. 关闭Session8. 关闭SesstionFactory二.Hibernate的查询方式有几种?(1)导航对象图检索方式。根据已经加载的对象,导航到其他对象。(2)OID查询方式。根据对象
2、的OID来查询对象。Session的get()和load()方法。(3)HQL查询方式。HQL是面向对象的查询语言,session的find()方法用于执行HQL查询语句。可以利用Query接口。Queryquery=session.createQuery(“fromCustomerascwherec.name=:customerName”);query.setString(“customerName”,”张三”);ListresultList=query.list();(4)QBC查询方式。这种API封装了基于字
3、符串形式的查询语句。Criteriacriteria=session.createCriteria(User.class);Criterioncriterion1=Expession.like(“name”,”T%”);Criterioncriterion2=Expession.eq(age,newInteger(30));criteria=criteria.add(criterion1);criteria=criteria.add(criterion2);ListresultList=criteria.list(
4、);这种查询方式使用的较少,主要是在查询中需要用户输入一系列的查询条件,如果采用HQL查询代码会比较烦。(5)本地SQL查询三.Hibernate的检索策略有几种?检索策略的作用域可选的检索策略默认的运行时受影响的session的检索方法类级别立即和延迟立即影响load()方法关联级别立即,延迟,迫切左外连接多对一和一对一关联为外连接影响load(),get(),find()方法一对多和多对多为立即检索立即检索----立即加载检索方法指定的对象。延迟检索----延迟加载检索方法指定的对象,只有当初次获取其属性或调用
5、其方法时才加载。如果将元素的lazy熟悉设置为true,那么Load()方法是延迟加载。而不管lazy是true或false,get()和find()方法永远是立即检索。session.load()和session.get()的区别 Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于: 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。执行load方法并不会
6、真正去查询DB,只有当首次访问实体对象属性时才会去DB中真正查询。(即懒加载)Load方法返回实体的代理类实例,而get方法永远直接返回实体类。load支持延迟加载,get不支持延迟加载。load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。四.Hibernate的缓存Hibernate有2级缓存。第一级缓存是session缓存,其是事务范围内的缓存,第一级缓存也是必需要的,无法清除。在第一级缓存中,每个持
7、久化的实例对象都有一个OID.第二级缓存是SessionFactory的外置缓存,是一个可以插拔的缓存插件,由SessionFactory负责管理。第二级缓存是进程范围内的或者群集范围内的缓存。五.Hibernate中对象的状态有几种?3种状态,瞬时状态,持久化状态,游离状态。(1)瞬时状态----刚用new语句创建,尚未持久化,没有被session所关联,DB中也没有对象的记录。(2)持久化状态----跟session关联,跟数据库中的相关记录对应。(3)游离状态-----由持久化对象转变而来,不再和sessio
8、n关联,数据库中有可能存在与之对应的记录。六.Hibernate中关于继承关系的映射方式(1)每个类分层结构一张表优点:简单,只需要一张表,查询效率高。缺点:需要在表中引入额外区分各个子类的字段,不能为所有的子类成员属性对应的字段定义Notnull约束。适用范围:查询性能要求高,子类属性不是很多时。(2)每个子类一张表,每张表中仅仅包含在当前类中定义的属性,
此文档下载收益归作者所有