您的位置:首页 > 其它

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)、Configuration接口:负责**配置及启动**Hibernate,用来**创建sessionFactory**

2)、SessionFactory接口:一个SessionFactory对应一个数据源存储,也就是一个数据库对应一个SessionFactory。SessionFactory用来创建Session对象。且SessionFactory线程安全,可以由多个线程访问SessionFactory共享。

3)、Session接口:Hibernate常用接口,主要用于对数据的操作(增删改查)。而这个Session对象非线程安全,不能共享。

4)、Query接口:用于数据库的查询对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate