【Java面试题】Hibernate
50)简述一下 hibernate 的开发流程
第一步:加载 hibernate 的配置文件,读取配置文件的参数(jdbc 连接参数,数据 库方言,hbm 表与对象关系映射文件) 第二步:创建 SessionFactory 会话工厂(内部有连接池) 第三步:打开 session 获取连接,构造 session 对象(一次会话维持一个数据连接, 也是一级缓存) 第四步:开启事务 第五步:进行操作 第六步:提交事务 第七步:关闭 session(会话)将连接释放第八步:关闭连接池
51)Hibernate 和 JDBC 对比
共同点:1.Java数据库操作中间件,线程不安全,显式事务处理。
不同点:
-
JDBC 是 SUN 公司提供一套操作数据库的规范,而Hibernate 是一个基于 jdbc 的主流持久化框架,对 JDBC 访问数据库的代码做了封装。
-
使用的SQL语言不同:JDBC 使用的是基于关系型数据库的标准 SQL 语言,Hibernate 使用的是 HQL(Hibernate query language)语言。
-
操作的对象不同:JDBC 操作的是数据,将数据通过 SQL 语句直接传送到数据库中执行,Hibernate 操作的是持久化对象,由底层持久化对象的数据更新到数据库中。
-
数据状态不同:
-
JDBC 操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致, 而 Hibernate 操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。
52)说说 hibernate 的三种状态之间如何转换?
hibernate 的三种状态是瞬时状态、持久状态、托管状态:
比如有一个 User 实体类和一张 User 表。当 new 了一个 user 对象,但没有开启事务。此时 user就处于瞬时状态,与数据库的数据没有任何联系,
当开启事务后,执行了 session.save()方法后,session 缓存中存放了该 user 对象,而数据库中也有相应的这条数据,此时就转换为持久状态。
当事务提交后,session 被销毁。session 缓存中就没有 user 对象,而数据库表中有相应记录,此时为托管状态。
53)如何搭建一个 Hibernate 的环境
先导入 jar 包与配置文件、hibernate 启动 session 的工具类。
在配置文件中配置数据库的基本信息与数据库方言
进行测试,先创建实体类和数据库中的表。创建映射文件,命名规则是 实体类名.hbm.xml。位置要与实体类同一包下。在映射文件中配置 实体类与数据库表之间的映射关系。在hibernate.cfg.xml 配置文件中添加映射文件的路径。
通过 hibernate 的工具类创建 sessionfactory,通过工厂创建 session 对象,通过 session 开启事务, 进行数据操作后,事务提交。
好看请赞,养成习惯:) 本文来自博客园,作者:靠谱杨, 转载请注明原文链接:https://www.cnblogs.com/rainbow-1/p/16318707.html
欢迎来我的51CTO博客主页踩一踩 我的51CTO博客
文章中的公众号名称可能有误,请统一搜索:靠谱杨的秘密基地