【Hibernate】概述

来源:互联网 发布:人力资源 网络培训 编辑:程序博客网 时间:2024/04/29 21:31

 

随着java技术的逐渐成熟与完善,作为建立企业级应用的标准平台,J2EE得到了长足的发展。借助于J2EE规范中包含的多项技术。Enterprise javaBean(EJB),Java Servelts(servlet),java server Pages(jsp) java Message Services(JMS)等 开发出许多应用的系统

OO系统

  • OOA面向对象的分析

  • OOD面向对象的设计

  • OOP面向对象的开发

在编程领域,若实现OO系统,首先要到UML建模,用例图来体现业务需求、用类图来体现系统的设计,在OO的思想里,万物皆对象,通过对象以及对象之间的关系(继承、关联、聚合、组合)组成整个系统,从而完美实现业务逻辑。但是最终所有的业务对象和对象关系,都要形成数据,并且在数据库中存储。为此,不得不加上一个操作数据库的控制逻辑,将OO立体的结构转化成一张平面的网状结构的E-R图用于数据库存储。

随之在传统的J2EE应用开发过程中也出现了一些问题

  • 数据模型和逻辑模型之间的矛盾,目前使用的数据库基本上都是关系型数据库,而java本质上一种面向对象的语言,对象在存储和读取时使用SQLJDBC进行数据操作,降低了编程的效率以及系统的可维护性 

    随之阻抗不匹配这个名词也逐渐流行起来

    所谓阻抗不匹配:从对象开看java是面向对象的,而关型数据库是面向关系的,二者存在不一致的概念,如:在对象里的继承概念,在关型数据库表中就没有与之匹配的概念。

     

     

    Hibernate为此而生,解决从OOER的转换问题。

    Hibernate是一个面向java环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping [ORM]这个表示的一种技术,用来把对象模型表示的对象映射到基本SQL的关系模型数据库结构中去。

    Hibernate不仅仅管理java类到数据库表的映射(包括java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发人工使用SQLJDBC处理数据的时间。Hibernate的目标是对于开发者通常的数据持久化相关的变成任务,解放其中的95%。对于数据为中心程序来说,他们往往只在数据库中使用纯粹过来来实现商业逻辑、Hibernate可能不是最好的解决方案,对于那些基于java的中间层应用中,他们实现面向对象的业务模型和商业模型的应用。

    HIbernate是一个数据持久层框架,是一种实现的对象和关系之间映射(O/R Mapping)的工具,它对JDBC进行了轻量级的对象封装,是程序员可以是用对象编程思想来操作数据库,它不仅提供了从java类到数据表的映射,也提供了数据查询和恢复机制,相对于使用JDBCSQL来操作数据库,使用了Hibernae能大大的提高实现效率! 

    Hibernate框架用配置文件的形式来定义java对象和数据库表之间的映射关系,同时在更深的层面讲数据库表之间的关系解释为对象之间java对象之间的继承以及包含等关系,通过HQL语句将复杂的关系算法用对象的方式描述。在很大程度上简化了对象的数据查询,加快了开发的效率,在hibernate种有一个简单而之间的API,用于对数据库说表示的对象执行查询,要创建或修改这些对象,只需在在程序与他们进行交互。然后告诉hibernate保存即可。这样,大量封装持久化操作的业务逻辑也不再需要编写繁琐的JDBC语句,从而使数据持久层得到极大的简化!

 

 

 

 

在层次上 Hibernate作为持久层。它是JDBC轻量级的对象封装,它是一个独立的对象持久化对象

 

我们把业务逻辑分开划分为业务层,和持久层。因为所处持久层的内容与业务层是没有关系的,若把持久层中的内容也放置在与业务层中,则修改持久层就会影响到业务,持久层对我们来说是透明的的,我们有其相应的方法就可以了。

分层目的:下层为上层服务的、上层不用关心下层具体做了什么,只需提供接口供其调用就可以了

层次依赖关系:自上而下的依赖,并且依赖于下面的通常是抽象的东西,抽象的东西、相对来说是一种规范,其变化就相对的少,最好不要产生循环依赖,更不要上面依赖于下面下面也依赖其上面,这样起耦合度高,一般是单向依赖

 

Hibernate能帮助我们面向对象的思想,开发关系型数据库的应用程序,也就是说我们无需关心关系型数据库这一方面,直接关心对象就可以了,若使用hibernate其开发方式会有所改变

 

通常我们一般做法是:是先建立表,都存在那些表,表与表之间存在的关系,这种方式是面向关系的。使用hibernate的正确开发方式主要任务是面向对象,首先把对象模型建立起来,然后写出映射文件也就是说对象映射到哪个表里,表的操作我们无需关心,把映射文件写出来之后,通过相应的工具把这些映射也就是对象自动生成表,我们只关系对象,这样使OOAOOPOOD更一体化

 

由此可知Hibernate的功能,也由此可知我们该怎样去学习Hibernate

 

在使用和学习Hibernate的过程中,我们要用OO的思想去设计系统,努力问自己Hibernate是如何把OO转换成ER,它用的什么方式转换的?又是怎样把数据库数据转换成为系统对象的,它利用缓存了吗,读了多少次数据库?最终这些转换生成系统本应该的SQL了吗?既然Hibernate能够生成SQL,为什么我的系统中还存在SQL呢,难道不能用Hibernate代替吗?我们要带着问题去学习Hibernate

 

原创粉丝点击