SSH框架之Hibernate介绍
什么是Hibernate?
Hibernate框架是当今主流的Java持久层框架之一.
持久层最常用的技术有JDBC,DBUtils
DBUtils封装的就是JDBC的操作方式,他只是把JDBC的操作方式简化了,但是他们都需要自己写Sql语句
特点:
1) JDBC的问题在于写起来很痛苦,尤其封装结果集到指定的实体类的时候
2) DBUtils的问题在于,结果集处理器太多,记忆起来很不方便.
3) 如果追求较高的执行效率的时候,一般采用DBUtils自己写SQL语句的方式.
基于直接写SQL语句,并不是某些开发人员的长项,这时候Hibernate横空出世,对JDBC进行了封装,解决了开发人员不想写SQL语句的问题.
什么是持久化呢?
大家都知道内存的数据只要释放和重启就没有了,不能够持久,而在文件系统的数据就很难因为重启而丢失.
可以理解为所谓的持久化就是将内存中的数据永久的存储到关系型数据库中
我们从三个角度理解一下Hibernate:
一、Hibernate是对JDBC进一步封装
原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,如果你对SQL语句不熟悉,根本就用不了JDBC,hibernate的创作者也是基于这样的想法,把JDBC封装了一下,这样我们不用操作数据,直接操作它就行了。
二、我们再从分层的角度来看
我们知道非常典型的三层架构:表示层(web),业务层(service),还有持久层(dao)。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。
注:
操作SQL语句的效率通常是最高的,Hibernate对JDBC做了封装后,不需要进行繁琐的SQL语句操作,但是响应的执行效率也是有所下降的.
很多人会认为三层架构就是MVC模型,事实上MVC模型,他只是表现层的一个模型,和其他层没有关系.
三、Hibernate是开源的一个ORM(对象关系映射)框架。
ORM,即Object-Relational Mapping(对象关系映射),它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了,简单的说就是把我们程序中的实体类和数据库表建立起来对应关系。
从上图中,我们可以看出Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系。Hibernate的所有内容都在这了。那我们从上到下简单的认识一下,每个接口进行一句话总结。
1、Configuration接口:负责配置并启动Hibernate
2、SessionFactory接口:负责初始化Hibernate
3、Session接口:负责持久化对象的CRUD操作
4、Transaction接口:负责事务
5、Query接口和Criteria接口:负责执行各种数据库查询
注意:Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。
优点:
Hibernate对JDBC访问数据库的代码做了轻量级封装,大大简化了数据访问层繁琐的重复性代码,并且减少了内存消耗,加快了运行效率。
Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,它很大程度的简化了DAO(Data Access Object,数据访问对象)层编码工作。
Hibernate的性能非常好,映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系。
可扩展性强,由于源代码的开源以及API的开放,当本身功能不够用时,可以自行编码进行扩展。
缺点:
1) Hibernate在批量数据处理时有弱势
2) 针对单一对象简单的增删查改,适合于Hibernate,而对于批量的修改,删除,不适合用
3更多的针对企业应用开发.
总结:
本文对Hibernate做了一个简单的介绍,从宏观上了解Hibernate,后续会持续展开.学习任何一种框架最重要的是需要知道的是为什么需要使用这个框架,任何一个框架的发明都是为了解决编程中的一些痛点.
文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。
原文链接:zmedu.blog.csdn.net/article/details/77462311
- 点赞
- 收藏
- 关注作者
评论(0)