hibernate--简介
2017-05-12 10:48
211 查看
一、Hibernate简介
1、什么是Hibernate
Hibernate是数据持久层的一个开源的orm(Object relations mapping)轻量级框架,提供查询获取数据的方法,用面向对象思想操作数据库,节省开发处理数据的时间。
2、Hibernate的优点
1)、使用hql语句(Hibernate query language)。可以不用传统的insert,update等sql语句。比如insert一个对象,原来的做法是:insert into 表名称 value(值1,值2,值3,……),而现在的做法是:save(对象)。
2)、使用ORM映射。对象到关系数据库之间的映射,从对象的角度操作数据库,再次体现了面向对象思想。原来的实体抽取方法:首先有了表,然后表映射实体对象。而现在Hibernate做法是:直接由对象映射到表。
3)、移植性较好。Hibernate采用pojo对象,即没有继承Hibernate类或实现Hibernate接口,此类就是一个普通的java类。
4)、支持透明持久化。透明是针对上层而言的,三层架构的透明理念是上层对下层的依赖,只是依赖接口不依赖具体实现。而Hibernate中的透明是指对业务逻辑层提供一个接口session,而其他的都封装隐藏。持久化就是把缓存中的东西放到数据库中使之持久。
/*持久化:
对于需要持久化的对象,它的生命周期分为三个状态:临时状态,持久化状态,游离状态.
临时状态:刚刚用new语句创建,没有被持久化,不处于session的缓存中.处于临时状态的java对象被称为临时对象.
持久化状态:已经被持久化,加入到session的缓存中.处于持久化的java对象被称为持久化对象.
游离状态:已经被持久化,但不处于session的缓存中,处于游离状态的java对象被成为游离对象.
持久化对象的特征:
| 位于一个session事例的缓存中,可以说持久化对象总是被一个session事例关联
| 持久化对象和数据库中的相关记录对应
| Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库
| Session的save()方法把临时状态变为持久化状态
*/
3、Hibernate的缺点。
1)由于对持久层封装过于完整,导致开发人员无法对SQL进行优化,无法灵活使用JDBC的原生SQL,Hibernate封装了JDBC,所以没有JDBC直接访问数据库效率高。要使用数据库的特定优化机制的时候,不适合用Hibernate。
2)框架中使用ORM原则,导致配置过于复杂,一旦遇到大型项目,比如300张表以上,配置文件和内容是非常庞大的,另外,DTO(Data Transfer Object)满天飞,性能和维护问题随之而来。
3)如果项目中各个表中关系复杂,表之间的关系很多,在很多地方把lazy都设置false,会导致数据查询和加载很慢,尤其是级联查询的时候。一个持久化对象不能映射到多张表中。
4)Hibernate在批量数据处理时有弱势,对于批量的修改,删除,不适合用Hibernate。
4、Hibernate的5个核心接口
1、什么是Hibernate
Hibernate是数据持久层的一个开源的orm(Object relations mapping)轻量级框架,提供查询获取数据的方法,用面向对象思想操作数据库,节省开发处理数据的时间。
2、Hibernate的优点
1)、使用hql语句(Hibernate query language)。可以不用传统的insert,update等sql语句。比如insert一个对象,原来的做法是:insert into 表名称 value(值1,值2,值3,……),而现在的做法是:save(对象)。
2)、使用ORM映射。对象到关系数据库之间的映射,从对象的角度操作数据库,再次体现了面向对象思想。原来的实体抽取方法:首先有了表,然后表映射实体对象。而现在Hibernate做法是:直接由对象映射到表。
3)、移植性较好。Hibernate采用pojo对象,即没有继承Hibernate类或实现Hibernate接口,此类就是一个普通的java类。
4)、支持透明持久化。透明是针对上层而言的,三层架构的透明理念是上层对下层的依赖,只是依赖接口不依赖具体实现。而Hibernate中的透明是指对业务逻辑层提供一个接口session,而其他的都封装隐藏。持久化就是把缓存中的东西放到数据库中使之持久。
/*持久化:
对于需要持久化的对象,它的生命周期分为三个状态:临时状态,持久化状态,游离状态.
临时状态:刚刚用new语句创建,没有被持久化,不处于session的缓存中.处于临时状态的java对象被称为临时对象.
持久化状态:已经被持久化,加入到session的缓存中.处于持久化的java对象被称为持久化对象.
游离状态:已经被持久化,但不处于session的缓存中,处于游离状态的java对象被成为游离对象.
持久化对象的特征:
| 位于一个session事例的缓存中,可以说持久化对象总是被一个session事例关联
| 持久化对象和数据库中的相关记录对应
| Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库
| Session的save()方法把临时状态变为持久化状态
*/
3、Hibernate的缺点。
1)由于对持久层封装过于完整,导致开发人员无法对SQL进行优化,无法灵活使用JDBC的原生SQL,Hibernate封装了JDBC,所以没有JDBC直接访问数据库效率高。要使用数据库的特定优化机制的时候,不适合用Hibernate。
2)框架中使用ORM原则,导致配置过于复杂,一旦遇到大型项目,比如300张表以上,配置文件和内容是非常庞大的,另外,DTO(Data Transfer Object)满天飞,性能和维护问题随之而来。
3)如果项目中各个表中关系复杂,表之间的关系很多,在很多地方把lazy都设置false,会导致数据查询和加载很慢,尤其是级联查询的时候。一个持久化对象不能映射到多张表中。
4)Hibernate在批量数据处理时有弱势,对于批量的修改,删除,不适合用Hibernate。
4、Hibernate的5个核心接口
1)、Configuration接口:负责**配置及启动**Hibernate,用来**创建sessionFactory** 2)、SessionFactory接口:一个SessionFactory对应一个数据源存储,也就是一个数据库对应一个SessionFactory。SessionFactory用来创建Session对象。且SessionFactory线程安全,可以由多个线程访问SessionFactory共享。 3)、Session接口:Hibernate常用接口,主要用于对数据的操作(增删改查)。而这个Session对象非线程安全,不能共享。 4)、Query接口:用于数据库的查询对象。
相关文章推荐
- Hibernate核心思想与接口简介
- 【Hibernate】-简介
- Hibernate 3注释简介
- Hibernate 开发简介-helloworld
- hibernate 一 简介
- Hibernate 检索方式简介 1
- Hibernate简介
- 史上最简单的Hibernate入门简介 (转)
- Hibernate映射文件注解简介
- Hibernate查询简介HQL和Criteria
- Hibernate简介
- Spring+Struts+Hibernate 简介(转)
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:6.技术简介之Protobuf
- hibernate简介1
- 【hibernate】——简介
- Hibernate的发展和特点以及Hibernate的工作原理简介
- Hibernate Annotation简介
- Hibernate框架简介基础
- Hibernate简介
- Hibernate第一次课(2)---Hibernate原理简介