框架学习:hibernate框架的结构和分析

       在上篇博客中介绍了struts2框架的原理和流程分析,可以说struts框架一路走来,改变非常大,而且让我们开发人员变得更加轻松,里面的设计理念的改变也是让我们编程人员的思路得到更大的扩展。

 

 

       可以说,一个先进的技术或者框架就是要不断的进步才能永远让编程人员喜欢和使用,一个优秀的编程人员也是要不断的进步才能永远让这个世界变得更加绚丽多彩。

 

      其实编程就是这样有意思的!

 

      前面说了一些宏观上学习框架相关的思想方面的东西,下面继续来介绍我经常使用的框架和框架的分析,这篇博客主要介绍的是hibernate框架。

      首先说hibernate框架是数据持久层的框架,这个框架是非常强大的,它让编程人员纯粹的用面向对象的方式来做开发,让编程人员所面对的都是对象。仅仅从这一点它的设计思路就是非常让编程人员喜爱的。

      回想我们普通的开发流程,和客户沟通定需求,抽象出来原型,从原型中建立数据模型到库表结构的建立,之后在映射成对象模型,之后在用oo的设计思想完成后续的程序开发。但是当我们使用了hibernate框架以后,原先的设计思路就显得不再那么具有优势了。我们直接建立对象模型,之后利用hibernate框架映射成数据模型,我们不再去考虑数据库关系模型的东西,仅仅考虑的东西仅仅就是类和对象,这样的开发才是面向对象的开发,也才是最接近人类思考问题的方式。所以hibernate框架的设计思路是非常好的。

        hibernate框架设计思路的优越性其实体现在了它本身的框架的原理上。hibernate封装了JDBC,减轻了开发人员在持久层的大量重复性工作,它利用了java反射机制来实现程序的透明性;它就是通过这两点才达到从对象出发而非关系数据库出发的效果。

 

      介绍这么多理论性的东西之后我们能够感觉到hibernate框架的强大,来看看它的结构图:

 

 

       在hibernate框架中有几个比较重要的接口和类:

  1. Query接口:Query负责执行各种数据库查询。它可以使用HQL语句或SQL语句两种表达方式。
  1. Configuration类:Configuration类负责配置并启动Hibernate,创建SessionFactory对象
  1. SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象
  1. Session接口:Session接口负责执行被持久化对象的CRUD操作
  1. Transaction接口:Transaction接口负责事务相关的操作

 

         hibernate框架就是在利用这几个接口来封装了JDBC,而且我们用这些接口来操作数据库变得非常简单,减少了我们在持久层的代码量。

       从这个结构图和我的一些分析就能发现hibernate框架是非常强大,而且它给我们开发人员的开发带来了非常大的便利,尤其是他的设计思路还有它的“全自动”的映射对象模型和关系模型。

       但是hibernate框架也有它的一些缺点:

  1. 既然是封装了JDBC,所以很明显它没有JDBC的效率高,尤其是在大量的处理表更新操作的时候。
  1. 它有局限性,一个持久化类不能映射多个表
  2. 它应对大数量的时候显得非常笨拙,这一点没有JDBC和接下来要介绍的IBatis框架

 

       其实一项技术或者一个框架都有它的优缺点,选择最合适的才是王道。

 

       这篇博客主要是介绍了hibernate框架的结构和分析,阐述了hibernate框架的优缺点,【具体详细使用要等到我的框架学习的后续文章】。总的来说hibernate框架在持久层的作用非常明显,我们懂得了它的优缺点之后,才能做到我们是否是要选择这个框架作为我们持久层开发的必须的技术支撑,所以这些我常用的框架结构和分析不单单是在介绍一些框架学习的宏观知识把控,更多的是在为将来做项目开发中选择合适的技术支撑做铺垫。

 

后续的博客在不断更新,希望这些博客能够对读者的开发过程带来帮助,当然如果读者对我的博客有什么好的建议或者意见,请与我联系。联系方式见博客侧边栏!

   [Hibernate体系结构的概要图] Hibernate体系结构的概要图 Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这6个核心接口分别加以介绍。    Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。   SessionFactory接口 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。   Configuration接口 Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。 Transaction接口   Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。 Query和Criteria接口   Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值