Hibernate常晤面试题汇总[Java编程]
本文“Hibernate常晤面试题汇总[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1.在数据库中条件查询速度很慢的时刻,若何优化?
1.建索引
2.削减表之间的关联
3.优化sql,尽大概让sql很快定位数据,不要让sql做全表查询,应当走索引,把数据量大的表排在前面
4.简化查询字段,没用的字段不要,已经对返回后果的掌握,尽大概返回少量数据
2.在Hibernate中举行多表查询,每个表中各取几个字段,也就是说查询出来的后果集并没有一个实体类与之对应,若何办理这个问题?
办理筹划一,按照Object[]数据取出数据,然后自己组bean
办理筹划二,对每个表的bean写构造函数,比方表一要查出field1,field2两个字段,那么有一个构造函数就是Bean(type1 filed1,type2 field2) ,然后在hql里面便可以直接生成这个bean了.具体怎么用请看相关文档,我说的不是很清楚.
session.load()和session.get()的辨别
Session.load/get办法都可以按照指定的实体类和id从数据库读取记录,并返回与之对应的实体对象.其辨别在于:
假如未能发现符合条件的记录,get办法返回null,而load办法会抛出一个ObjectNotFoundException.
Load办法可返回实体的代理类实例,而get办法永久直接返回实体类.
load办法可以充分操纵内部缓存和二级缓存中的现有数据,而get办法例仅仅在内部缓存中举行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取.
Session在加载实体对象时,将经过的历程:
首先,Hibernate中保持了两级缓存.第一级缓存由Session实例保护,此中保持了Session当前全部关联实体的数据,也称为内部缓存.而第二级缓存则存在于SessionFactory层次,由当前全部由本SessionFactory构造的Session实例同享.出于性能考虑,避免无谓的数据库拜候,Session在调用数据库查询功效之前,会先在缓存中举行查询.首先在第一级缓存中,通过实体范例和id举行查找,假如第一级缓存查找命中,且数据状况合理,则直接返回.
之后,Session会在当前“NonExists”记录中举行查找,假如“NonExists”记录中存在一样的查询条件,则返回null.“NonExists”记录了当前Session实例在之前全部查询操作中,未能查询到有效数据的查询条件(相当于一个查询黑名单列表).如此一来,假如Session中一个无效的查询条件反复呈现,便可疾速作出判断,从而得到最佳的性能表现.
以上是“Hibernate常晤面试题汇总[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |