HIbernate最重要的几道面试题

1.Hibernate的工作原理

   ·解析并读取hibernate的配置文件

   ·解析并读取hibernate的映射文件,并创建sessionFactory

   ·打开session

   ·开启事物

   ·执行持久化操作

   ·提交事物

   ·关闭session 

   ·关闭sessionFactory

2.Hibernate对象的三种状态,以及如何转换

   ·瞬时状态、持久化状态、游离状态

   ·瞬时状态:程序中new出来的对象为瞬时状态,此时对象未保存到数据库中,且不受session管理;

   ·持久化状态:存在数据库中且受session管理的对象;

   ·游离状态:当session关闭后,存在于内存中的对象不受session管理,那么就是游离状态;

   ·相互转换:

                     瞬时状态--->持久化操作save()--->持久化状态

                   ·持久化状态--->session关闭后,缓存中的对象就是游离状态了

                   ·游离状态---->update(),又变为持久化状态

                   ·持久化状态---->delete(),又变成瞬时状态

3.Hibernate如何管理缓存

   ·hibernate有一级(session)、二级(sessionFactory)缓存;

    ·一级缓存由hibernate管理,一般情况下不需干预;

    ·二级缓存属于进程范围内的缓存,这一级别的缓存可以进行配置和更改,可以动态加载和卸载;(EhCache)

4.使用hibernate的优点

    ·hibernate是一个orm持久化框架,对jdbc的操作进行了很好的封装,提高了代码的复用性,且同时是一个轻巧灵活的轻量级框架

5.hibernate是如何延迟加载的

    ·hibernate2可以对对象与集合进行延迟加载;

    ·hibernate3可以对属性进行延迟加载;

    ·当hibernate在查询数据的时候,数据并没有存在内存中,只有当查询的数据真正被调用的时候,数据才会存在于内存中,这就实现了延迟加载;     

    ·通常在需要延迟加载的对象或者属性集合上添加lazy属性,或者通过session.load(User.class, 1)这种方式使用延迟加载;

6.hibernate如何实现类之间的关系

    ·通过在映射文件中设置many-to-one|one-to-many|many-to-many

7.update于saveOrUpdate区别

    ·update操作的对象必须是持久化的对象,如果该对象不存在于数据库中,就无法使用updae方法;

    ·saveOrUpdate操作的对象可以是持久化也可以是非持久化的,对象存在于数据库中就调用update,否则调用save;

8.hibernate的get与load

   ·get与load都可以通过id查询到对象

   ·get是立即加载,load是延迟加载;

9.hibernate的检索策略

   ·立即检索、延迟检索、左外连接检索

            ·立即检索:lazy = false

                              优点:对程序完全透明,处于任何状态的对象很方便的导航到关联对象

                               缺点:select语句过多,可能会加载不需要的数据浪费内存

            ·延迟检索:lazy = true

                               优点:由程序决定加载的对象,避免过多的select语句,不会加载不需要的数据,照成内存浪费

                               缺点:对程序不透明,在session关闭后就无法访问对象了

           ·左外连接检索:fetch = join

                               优点:对应用程序完全透明,处于任何状态的对象导航到其他对象都很方便,减少了select语句

                               缺点:可能会加载不需要的对象浪费内存;

10.hibernate支持哪些缓存策略

      ·usage有4种缓存策略:

         1.放入二级缓存的对象,只读read-only

         2.非严格的读写:nonstrict read/write

         3.放入二级缓存的对象,读写read/write

         4.基于事务的策略

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值