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()来创建类的实例。如果没有无参的构造函数就会抛出异常。
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!