hibernate常见面试题汇总

hibernate常见面试题汇总

ID:32192714

大小:58.80 KB

页数:4页

时间:2019-02-01

hibernate常见面试题汇总_第1页
hibernate常见面试题汇总_第2页
hibernate常见面试题汇总_第3页
hibernate常见面试题汇总_第4页
资源描述:

《hibernate常见面试题汇总》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.在数据库中条件查询速度很慢的时候,如何优化?  1.建索引  2.减少表之间的关联  3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的表排在前面  4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据  2.在Hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题?  解决方案一,按照Object[]数据取出数据,然后自己组bean  解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么

2、有一个构造函数就是Bean(type1filed1,type2field2),然后在hql里面就可以直接生成这个bean了。具体怎么用请看相关文档,我说的不是很清楚。  session.load()和session.get()的区别  Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:  如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。  Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。  load

3、方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。  Session在加载实体对象时,将经过的过程:  首先,Hibernate中维持了两级缓存。第一级缓存由Session实例维护,其中保持了Session当前所有关联实体的数据,也称为内部缓存。而第二级缓存则存在于SessionFactory层次,由当前所有由本SessionFactory构造的Session实例共享。出于性能考虑,避免无谓的数据库访问,Session在调用数据库查询功能之前,会先在缓存中进

4、行查询。首先在第一级缓存中,通过实体类型和id进行查找,如果第一级缓存查找命中,且数据状态合法,则直接返回。之后,Session会在当前“NonExists”记录中进行查找,如果“NonExists”记录中存在同样的查询条件,则返回null。“NonExists”记录了当前Session实例在之前所有查询操作中,未能查询到有效数据的查询条件(相当于一个查询黑名单列表)。如此一来,如果Session中一个无效的查询条件重复出现,即可迅速作出判断,从而获得最佳的性能表现。  对于load方法而言,如果内部缓存中未发现有效数据,则查询第二级缓存,如果第二级缓存命中,则

5、返回。  如在缓存中未发现有效数据,则发起数据库查询操作(SelectSQL),如经过查询未发现对应记录,则将此次查询的信息在“NonExists”中加以记录,并返回null。  根据映射配置和SelectSQL得到的ResultSet,创建对应的数据对象。  将其数据对象纳入当前Session实体管理容器(一级缓存)。  执行Interceptor.onLoad方法(如果有对应的Interceptor)。  将数据对象纳入二级缓存。  如果数据对象实现了LifeCycle接口,则调用数据对象的onLoad方法。  返回数据对象。  Hibernate的主键生成

6、机制  1)assigned  主键由外部程序负责生成,无需Hibernate参与。  2)hilo  通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。  3)seqhilo  与hilo类似,通过hi/lo算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。  4)increment  主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访

7、问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。5)identity  采用数据库提供的主键生成机制。如DB2、SQLServer、MySQL中的主键生成机制。  6)sequence  采用数据库提供的sequence机制生成主键。如Oralce中的Sequence。  7)native  由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。  8)uuid.hex  由Hibernate基

8、于128位唯一值产生算法

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。