Hibernate是一个开放源代码的对象关系映射框架,是对java中的对象关系映射解决方案。由于它对JDBC进行了轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维操作数据库。在学习Hibernate之前应该先Hibernate有一个大概的了解,文中会对Hibernate基础、Hibernate查询方式、Hibernate缓存机制等等进行讲解。
Hibernate概述
Hibernate是什么?由Gavin King在2001年的时候提出并且创建的一个开源持久框架。准确来说是一个ORM(Object Relational Mappint,对象关系映射)框架。有人将之称为持久层框架,因为它处于项目中的持久层位置。
它的基础是java反射机制。Hibernate映射Java类到数据库表和从Java数据类型到SQL数据类型和95%的通用数据持久化相关的编程任务,解放了开发者。
Hibernate优点
Hibernate对JDBC访问数据库的代码做了封装,简化了很多数据访问层繁琐的重复性代码。
Hibernate基于JDBC的主流持久框架,简化了DAO层的编码工作
Hibernate提供可简单的API并可以根据需要进行扩展。
Hibernate具有java反射机制,并不是用字节码增强程序从而实现透明性。
Hibernate的性能非常优秀,因为HIbernate是一个轻量级的框架,所以映射的灵活性优秀。
Hibernate支持各种关系数据库,支持各种复杂的一对一到多对多的关系。它不要求应用服务器进行操作,提供数据的简单查询,避免了引人过多复杂的问题。
Hibernate的工作原理
首先会读取并解析配置文件和映射信息,创建SessionFactory。在Session中创建事务Transaction,提交事务,关闭Session和SessionFactory。
Hibernate的查询方式
HQL:一种面向对象的查询语言,其中只有类、对象以及属性的概念。
Criteria:采用面向对象方式封装查询条件,称为对象查询。
SQL:数据库查询
DetachedCriteria:动态分离查询
Hibernate的缓存机制
不使用单行一对多,使用双向一对多。灵活使用单项一对多关联,不使用一对一使用多对一。不使用集合缓存而是配置对象缓存。在一对多的时候使用Bag,多对多集合使用Set。表字段要少,表关联多。
在HIbernate中有一级和二级缓存之分
一级缓存:Session缓存,如果一个Session做了一个查询操作,就会把这个把这个操作结果放在一级缓存。如果同一个Session又做了同一个操作,HIbernate就会直接从一级缓存里拿,而不是数据库。
二级缓存:SessionFactory级别缓存,把查询结果缓存到二级缓存。如果同一个sessionFactory ,创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果。
Hibernate如何延迟加载
1.实体延迟 2.集合延迟 3.属性延迟
实体延迟:在Hibernate中利用代理类实现对实体的延迟加载。
集合延迟:在一对多的映射中,例如一个用户有多个邮箱例子中。我们可以对邮箱集合属性做延迟加载处理,只有在需要使用邮箱时才从数据库查询出来,这样可以大大提高系统性能。
属性延迟:只有在要使用到延迟加载的属性时,才从数据库查询出属性。
文中我们对Hibernate的概念、作用、优点、工作特点以及查询方式进行了说明。并没有很深入详细的对Hibernate进行讲解式的说明,如果你不先了解基础,深层的知识你就不能掌握。希望对你有所帮助。