Java面试题之Hibernate

导读:本篇文章讲解 Java面试题之Hibernate,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

十二、Hibernate

113. 为什么要使用 hibernate?

1.对JDBC访问数据库的代码做了大量的封装,简化开发
2.性能好,支持各种关系数据库.

114. 什么是 ORM 框架?

ORM的意思是对象关系映射,它的作用是在关系型数据库和业务实体对象之间做映射
这样我们在操作具体业务对象的时候,就不需要去和具体的SQL语句打交道,只需要操作对象的属性和方法.

115. hibernate 中如何在控制台查看打印的 sql 语句?

在hibernate配置文件中配置hibernate.show_sql属性

116. hibernate 有几种查询方式?

三种:HQL查询    QBC查询(也叫Criteria查询)  本地SQL查询

117. hibernate 实体类可以被定义为 final 吗?

不能,因为hibernate使用代理方式在延迟加载的情况下提高性能,如果定义为final 就不能继承,也就无法实现代理.

118. 在 hibernate 中使用 Integer 和 int 做映射有什么区别?

1.如果数据库返回字段值是null的话,int类型会报错,Integer则不会

119. hibernate 是如何工作的?

  1. 通过Configuration config = new Configuration().configure();解析配置文件
  2. 由hibernate.cfg.xml中的<mapping resource=”com/xx/User.hbm.xml”/>读取并解析映射信息
  3. 通过SessionFactory sf = config.buildSessionFactory();//创建SessionFactory
  4. Session session = sf.openSession();//打开Sesssion
  5. Transaction tx = session.beginTransaction();//创建并启动事务Transation
  6. persistent operate操作数据,持久化操作
  7. tx.commit();//提交事务
  8. 关闭session和sessionFactory

120. get()和 load()的区别?

  • get方式会直接触发sql语句查出对象,load方式会使用延迟加载的机制加载这个对象,此时是个代理对象 只保存实体对象的id值,只有用到其他属性的时候才会调用sql查出来.
  • 如果对象不存在,get方式会抛出空指针异常,load方式会抛出ObjectNotFoundException

121. 说一下 hibernate 的缓存机制?

hibernate为了降低对数据库访问的频率,加入了缓存机制.缓存内的数据是对物理数据库数据的复制,
应用程序在运行时,从缓存中读写数据.
Hibernate的缓存包括两大类:session一级缓存和sessionFactory二级缓存.一级缓存不可卸载.
当根据ID查询数据的时候,首先从session缓存中查,查不到,如果设置了二级缓存,那么从二级缓存中查,
如果都查不到,再查数据库.将查到的数据按照ID放入缓存中,在删除,更新,增加数据的时候更新缓存.

122. hibernate 对象有哪些状态?

Hibernate对象有三种状态
    1.    Transient 瞬时态, 此时对象刚new出来,还没有save()
    2.    Persistent 持久态, 调用了save方法或者游离态的对象调用了update方法后会变成持久态
        如果对象是持久化对象时,那么对该对象的任何修改,都会在提交事务时才会与之进行比较
    3.    当调用了session.clear()方法,以后 对象就会变成游离态

123. 在 hibernate 中 getCurrentSession 和 openSession 的区别是什么?

采用getCurrentSession()获得的session会绑定到当前线程,而openSession则不会
getCurrentSession()获得的session在commit或者rollback后会自动关闭,而openSession必须手动关闭

124. hibernate 实体类必须要有无参构造函数吗?为什么?

必须要有,以为hibernate是通过反射的方式来获得对象实例的,此时会调用默认的无参构造.
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97000.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!