(开源O/R映射框架):为了解决面向对象与关系型数据库存在不匹配现象的技术。本质是将数据从一种形式转换到另外一种形式。
分层后,上层不需要知道下层是如何做,不可以是循环依赖,一般是单向依赖。
Hibernate的作用:
●将对象模型(实体类)的数据存入关系模型
OOA:面向对象的分析
OOD:面向对象的设计
OOP:面向对象的开发
阻抗不匹配:例如JAVA类中有继承关系,但关系数据库中不存在这种概念,这就是阻抗不匹配,Hibernate可以解决这个问题
Hibernate存在原因:
1. 解决阻抗不匹配
2.目前不存在完整的面向对象的数据库(都是关系型数据库)
Hibernate的优点:
1.只需要操作相应的对象,实现了面向对象的操作
2.不需要编写SQL语句,提高了开发效率
3.移植性好(更换数据库时,只需要修改配置文件就可以了)
4.Hibernate实现了透明持久化:当保存一个对象时,这个对象不在继承Hibernate的任何类,实现任何接口,只是一个纯粹的POJO对象
Hibernate是一个没有侵入性的框架(轻量级框架)
Hibernate使用范围:
1.针对某一个对象,简单的将它加载,编辑,修改,且修改只是针对单个对象
2.对象之间有清晰的关系(如多对一,一对多)
3.聚集性操作:批量添加,修改时,不适合使用
4.使用数据库中的特定功能时不适合使用,因为Hibernate不使用SQL
Hibernate重点学习内容:Hibernate的对象关系映射
对象关系映射模式
●属性映射
●类映射
●关联映射
■一对一
■一对多
■多对多
常用O/R映射框架:
1. Hibernate
2.Apache OJB
3.JDO(SUN)
4.TopLink(Oracle公司)
5.EJB
6.IBatis(非常的轻量级,对JDBC做了一个非常轻量级的包装,严格说不是O/R映射框架,而是基于SQL的映射(提供了一套配置文件,把SQL语句配置到文件中,再配置一个对象进去,只要访问配置文件就可以访问到对象))
Hibernate是一个O/R映射框架(也称为ORM)
从ORM词来看,O-Object(对象模型);R-Relational(关联模型),可以看做对象关联的一种映射,一个完善的ORM框架应该具有更多的功能;如HQL相关查询语句,提供缓存机制(一级缓存,二级缓存)
Configration对象:读取hibernate配置文件(hibernate.cfg.xml或hibernate.properties)的,new Configuration()默认是读取hibernate.properties,所以使用new Configuration().configure();来读取hibernate.cfg.xml配置文件
SessionFactory:是一个重量级对象,它的创建是耗时的。因为它对应一个数据库里的所有配置,包括一些缓存机制都是由SessionFactory来维护,它与二级缓存是绑定的。通常只创建一次,但它是线程安全的。
Session是非线程安全的,它是通过SessionFactory来创建的。不要多个线程同时访问一个Session,否则会出现一些未知问题。通常是一个请求对应一个Session,请求完成关闭Session
Transaction:Hibernate默认不是自动开启事物的,所以要手动开启事物,手动提交事物,手动回滚事物,手动关闭事物。也可以通过配置文件配成自动
Hibernate的正常开发思路:考虑对象模型这一块,把对象模型建立起来,把对象图建立起来,对象之间的关系建立起来,然后编写映射文件(hbm);然后根据映射文件生成数据库。数据库对我们来说是透明的,我们只关心数据库。