Hibernate 总结

Hibernate简单使用: MyEclipse Hibernate 学习总结

113. 为什么使用hibernate

1) Hibernate 是对jdb的封装,大大简化了数据访问层的繁琐的重复代码

2) Hiberate是一个优秀的ORM实现, 很大程度上简化了DAO层的编码功能

3) 很方便的进行数据库的移植工作

4) 提供缓存机制,使程序执行更改高效

114. 什么是ORM框架

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

使用ORM的有点: 提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。

115、Hibernate中如何查看打印的SQL语句

在Config里面把hibernate.show_SQL设置为true就可以。但不建议开启,开启后会降低程序的运行效率。

?116、Hibernate 有几种查询方式?

三张: Hql(Hibenate Query Language), 原生SQL, 条件查询Criteria

117、Hibernate实体类可以被定义为final吗

实体类可以定义为final类,但是这样的话就不能使用hibernate代理模式下延迟关联提供性能了,所以不建议实体类为final.

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

Integer类型为对象,它的值允许为null, 而int属于基础数据类型,值不能为null

119、 hibernate是如何工作的?

1) 读取并解析配置文件

2) 读取并解析映射文件,创建SessionFactory

3) 打开Session

4) 创建事务

5)进行持久化操作

6) 提交事务

7) 关闭Session

8) 关闭SessionFactory

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

1) 数据查询时,没有OID指定的对象, get() 返回null; load() 返回一个代理对象。

2) load() 支持延迟加载; get() 不支持延迟加载。

? 121. 说下Hibernate的缓存机制?

hibernate常用的缓存有一级缓存和二级缓存:

一级缓存: 也叫Session缓存,只在Session作用范围内有效,不需要用户干涉,有Hibernate自身维护,可以通过evict(object)清除object的缓存; clear() 清除一级缓存中的所有缓存; flush() 刷出缓存
二级缓存: 应用级别的缓存,在所有Session中都有效,支持配置第三方的缓存,如: EhCache。

 ? 122.Hibernate对象有哪些状态

临时/瞬时状态: 直接new出来的对象,该对象还没有被持久化(没有被保存到数据库中),不受Session管理

持久化状态: 当调用Session的save/svaeOrupdate/get/load/list等方法的时候,对象就是持久化状态。

游离状态: Session关闭之后对象就是游离状态。

?123、在Hiberante中getCurrentSession和openSession的区别是什么?

1) getCurrentSession会绑定当前线程,而openSession则不会

2) getCurrentSession事务是spring 控制的,并且不需要手动关闭,而openSession需要我们自己手动开启和提交事务。

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

Hibernate中每个实体类必须提供一个无参构造函数,因为Hibenate框架要使用reflection api,通过ClassnewInstance()来创建类的实例。如果没有无参的构造函数就会抛出异常。

原文地址:https://www.cnblogs.com/linlf03/p/10777568.html