Hibernate的学习,不算是新知识的学习,因为之前在项目中已经接触和使用了EF,它们都是ORM思想的具体实现。
所以开始学习Hibernate的时候,想起了《红楼梦》中的一句话:“眼前分明是外来客,心底却似旧相识”。我想,作为程序员,大家在学习知识过程中经常会有这种感觉吧!
下面的总结,是对之前学习的一个回顾,也是对今后的学习的一个指导。
概述
Hibernate在英文中是“冬眠”的意思,形象地解释了“持久”的状态,和持久化就联系在了一起,是一种ORM框架。
【持久化】:
就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。
【ORM】:
1.概念:对象关系映射。在程序开发时我们遵循面向对象的思想,对象都在内存中,但是数据最后会存到数据库中,数据库大多是关系型的数据库。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。它们之间是不匹配的。
2.映射:在数学中y=f(x),那么f是x到y的映射,代表了x和y之间的对应关系,ORM就是程序对象和关系数据库中数据之间的对应关系。既包括对象转化成关系数据的,也包括关系数据转化成对象的。
3.对比:在没有Hibernate,EF这些框架之前,我们要自己搭建桥梁,实现他们之建的“沟壑”,比如:在程序中用sql语句查询出一个记录集合之后,我们要遍历这个集合,把每条记录的每个字段赋给一个实体的相应属性,然后再把实体添加到list集合中。会有很多重复代码。
优点
对象化:面向对象开发。
提高开发效率:避免写重复代码,提高效率。
移植性:数据库变的时候,只需要该配置文件就可以了。
轻量级:只需要有Java环境就可以了,不需要有容器、服务器。轻量级框架特点:没有侵入性。(在使用框架的时候,并不需要让原有的对象去继承或实现什么东西)
透明持久化:不知道的时候就把对象保存到数据库了。
学习路线
- API:对对象进行CRUD操作
- 如何配置和连接数据库
- 映射
特性:缓存,延迟加载,性能优化……
重点
在EF学习时学会了基本的CRUD操作,以及配置方法,但是没有认真总结过哪些映射关系,而且对延迟加载,性能优化这些内容不了解,所以这次学习重点学习这些内容。