关于Hibernate的面试问题

Hibernate框架是当前热门框架SSH的重要组成部分,经常会被面试官问到相关问题,今天

我们就来总结一下这些问题。都是干货欢迎收藏。

1.  Hibernate的工作原理

①. 通过Configuration读取并解析hibernate.cfg.xml配置文件

②. 由hibernate.cfg.xml中的<mapping resource>读取并解析映射文件

③. 通过config.buildSessionFactory创建sessionFactory

④. 通过sessionFactory.openSession获取session

⑤. 通过session.beginTransaction开启事务

⑥. 操作数据

⑦. 提交事务

⑧. 关闭session和sessionFactory

 

2.  Hibernate的工作原理

优点:

①. 对JDBC访问数据库的代码进行了封装,简化了数据库访问层繁琐的重复性代码

②. 映射的灵活性,它支持各种关系数据库,从一对一到多对多的各种复杂关系

③. 非侵入性、移植性会好

④. 缓存机制:提供一级缓存和二级缓存

缺点:

①. 无法对SQL进行优化

②. 框架中使用ORM原则,导致配置过于复杂

③. 执行效率和原生的JDBC相比偏差:特别是在批量数据处理的时候

④. 不支持批量修改、删除

 

3.   在Hibernate应用中Java对象的状态有哪些?

①. 临时状态(新建状态):不处于session缓存中

②. 持久化状态:加入到session缓冲中

③. 游离状态:已经被持久化,但不在session的缓存中

 

4.  Hibernate如何延迟加载

当调用session的load()方法加载实体类时,就会延迟加载;

 

5.   Hibernate进行大批量更新的经验

直接通过JDBC API执行相关的SQL语句或者调用相关的储存过程是最佳的方式

 

6.  Hibernate的缓存机制

Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存,当hibernate根据ID访问数据对象时,首先会从session一级缓存中查;查不到,如果配置了二级缓存,则从二级缓存中查;如果都查不到,再查询数据库。

①. 一级缓存:又称为”Session级别缓存”,只存在于session的生命周期中,当session关闭时,该session所管理的一级缓存也会被立即清除。该缓存由Hibernate管理,应用程序无须干预

②. 二级缓存:又称为”SessionFactory级别缓存”,存在于整个应用程序中,一个应用程序对应一个SessionFactory。该缓存可以进行配置和更改,并且可以动态加载和卸载,hibernate为查询结果提供了一个查询缓存,它依赖于二级缓存

 

7.  Hibernate中getCurrentSession()和openSession()的区别?

①. getCurrentSession()会先查看当前线程中是否绑定了session,如果有则直接返回,如果没有再创建。而openSession()则直接new一个新的session并返回

②. getCurrentSession在事务提交时会自动关闭session,而openSession()需要手动关闭

 

8.  Hibernate查询方式有哪些

①. QBC标准查询

②. HQL查询(Hibernate query language hibernate查询语言)

③. 本地SQL查询(原生态查询)

 

9.   Hibernate中Load()和get()区别?

①. 从返回结果上对比:get方法检索不到结果的话,返回结果为null;但是load()方法检索不到结果的话,则会出现ObjectNotFoundException异常

②. 从检索机制上对比:load支持延迟加载(懒加载),get不支持延迟加载

 

好了,孩子们,今天的分享就到这里了,希望对你妹有所帮助,我们下期见!!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值