Loading...

# 为什么要使用 hibernate?

  • Hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码
  • hibernate 是一个优秀的 ORM 框架,很大的简化了 DAO 层的编码功能
  • 可以很方便的进行数据库的移植操作
  • 提供缓存机制,使程序执行更高效

# 什么是 ORM 框架?

ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射为程序中的对象。

ORM 的优点:提供开发效率降低开发成本、开发更简单更对象化、可移植性更强。

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

在 Config 里面把 hibernate.show.sql 设置为 true,不建议开启,开启之后会降低程序的运行效率。

# hibernate 有几种查询方式?

  • hql
  • 原生 sql
  • 条件查询 Criteria

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

Integer 类型为对象,它的值运行为 null,而 int 属于基本数据类型,值不能为 null。

# hibernate 是如何工作的?

  • 读取并解析配置文件
  • 读取并解析映射文件,创建 sessionFactory
  • 打开 session
  • 创建事物
  • 进行持久化操作
  • 提交事物
  • 关闭 session
  • 关闭 sessionFactory

# get () 和 load () 的区别?

  • 数据查询时,没有 OID 指定的对象,get () 返回 null,load () 返回一个代理对象
  • load () 支持延迟加载,get () 不支持延迟加载

# 说⼀下 hibernate 的缓存机制?

hibernate 常用的缓存为一级缓存和二级缓存

一级缓存:也叫 session 缓存,只在 session 作用范围内有效,不需要用户干涉,由 hibernate 自身维护,可以通过 evict (object) 清除 object 的缓存,clear () 清除一级缓存中的所有缓存,flush () 刷出缓存。

二级缓存:应用级别的缓存,在所有的 session 中有效,支持配置第三方的缓存,如:EhCache。

# hibernate 对象有哪些状态?

  • 临时、瞬时状态:直接 new 出来的对象,该对象还没被持久化(没保存到数据库中),不受 session 管理
  • 持久化状态:当调用 session 的 save、saveOrUpdate、get、load、list 等方法的时候,对象就是持久化状态
  • 游离状态:session 关闭后对象就是游离状态

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

  • getCurrentSession 会绑定当前线程,而 openSession 不会
  • getCurrentSession 事物是 Spring 控制的,并且不需要手动关闭,而 openSession 需要我们手动开启事物和提交事物。
更新于

请我喝[茶]~( ̄▽ ̄)~*

七音 微信支付

微信支付

七音 支付宝

支付宝