`
明日天涯
  • 浏览: 35458 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

Hibernate体系结构剖析

阅读更多
    首先,我们先来模拟一个应用场景,针对的是MVC三层结构的网站,模拟的是客户端注册用户的场景。假设注册一个用户需要在表单中填入帐号和密码,当我们填完注册信息,点击提交时,注册信息提交到了服务器端的控制层,再由控制层调用模型层中的Dao对象将注册信息添加到数据库中去。实际上这么一个简单的流程,涉及到了两次的数据转换。首先,当我们在客户端注册表单中填入注册信息时,信息是以map结构(即键值对形式,例如密码信息,其存在形式为(password,”…”))存在的,我们可以称之为扁平数据;然后注册信息传到控制层,由控制层将那些零散的扁平数据封装为OO数据(即面向对象的数据,称之为pojo/vo对象,那些零散的注册信息封装成pojo对象的属性,例如这里的注册信息就可以封装到user对象当中去);接着,控制层调用模型层中的Dao对象,将OO数据在Dao对象中又拆成各个零散的扁平数据,然后通过执行sql语句将注册信息添加到数据库中去。假设我们用的是关系型数据库,那么,注册信息在数据库中的存在形式就是关系型数据(有一点我们需要理解的是,数据是信息的载体,同样的数据在不同的环境下所表达的信息也许是不一样的)。

    好了,现在我们在脑子中试想一下这个流程,以及数据之间的转换。是否会感觉到有点繁琐呢?我想答案是肯定的。那么,我们有没有一个稍微好一点的方法来解决这个繁琐的问题呢?这时候,ORM理念就派上用场了。什么是ORM呢?先来看一下它的全称,object relation mapping(对象关系映射)。我想,通过它的名称我们便可以对它的思想有些许了解。所谓对象关系映射,就是将应用程序中的对象跟关系数据库中的关系表的记录建立一种映射关系(或者我们说将应用程序中的pojo类,与关系数据库中的表建立映射关系,这里需要注意的是类和对象的区别)。那么,ORM理念究竟是如何解决我们上面提出的那个问题呢?实际上是这样的,针对上面我们模拟的那个注册场景,当注册信息在控制层封装为user对象后,假如我们事先建立了user类跟数据库中user_info表的映射关系,那么,当控制层调用Dao对象时,便可以直接将user对象中所包含的注册信息保存到user_info表中的相关字段上(一个对象映射为一条记录)。但是,这个映射过程究竟是如何实现的呢?是不是有这么一种工具会帮我们做这么一件事呢?是的,的确有这样的工具,我们称之为ORM工具,例如hibernate、ibatis框架等等。

    这里,我们着重来剖析一下hibernate框架的体系结构。首先,让我们了熟悉一下hibernate框架中所包含的元素:
1.hibernate.cfg.xml:hibernate配置文件,用来配置应用程序所连接的数据库的相关信息以及连接信息。
2.pojo.hbm.xml:hibernate映射文件,用来配置应用程序中的pojo类与数据库表的映射关系(类的属性映射为表的字段),需要注意的一点是,我们必须将hibernate映射文件的存储路径配置到hibernate配置文件中,以便程序运行时系统能找到hibernate的映射信息。
3.Configuration:用来获取hibernate.cfg.xml文件的配置信息,并且可以根据相关的配置信息来创建SessionFactory对象。
4.SessionFactory:主要用来创建session对象(注,不要将这里的session对象与jsp内置对象中的session混淆)的工厂类。SessionFactory中有一个session池,用来存储session。
5.Session:主要用来持久化对象,也就是将应用程序中的OO数据持久化到数据库中去。其底层实现是由JDBC/JTA/JNDI这样的技术实现的。每一个session对象都对应一个connection对象
6.TransactionFactory:事务工厂类,用来创建事务对象的。实际上,一个session对象就是一个TransactionFactory对象。
7.Transaction:事务对象,是由TransactionFactory对象创建的。编写一个事务在代码中包括了三个阶段:开启事务(调用transaction对象的begin()方法),编写事务处理内容,提交事务(调用transaction对象的commit()方法)。当执行了事务对象的commit()方法后,事务要处理的内容才被执行。事务要么全部成功,要么全部失败,可以将一个事务理解为是一个原子操作。
   
    好了,以上就是hibernate框架中我们常用到的对象,它们贯穿了hibernate框架的整个业务流程(这里我们暂且不考虑hibernate框架的底层操作)。或许,熟悉了上面所介绍的几个hibernate元素,我们对于hibernate整个业务流程还不是很清晰。接着,我们沿用上面我们所模拟的注册场景,来一起走一下hibernate的业务流程。首先,我们在客户端提交注册信息,注册信息被提交到服务器端的控制层,并在控制层中被封装为user对象(即模型层中的pojo对象),然后控制层调用模型层中的Dao对象,并由Dao对象创建session对象(这个创建过程实际上包含了configuration对象的创建,然后由configuration对象去读取hibernate配置文件中的配置信息并创建sessionFactory对象,最后由sessionFactory对象创建了session对象),接着,由session对象创建transaction对象,并在transaction事务对象的开启和提交动作之间执行session.save(user)操作,最后,当然只要一切顺利的话,数据库中的user_info表中就多了一条记录了(这里的一切顺利,并非指的是一切看造化,而是说我们的整个配置过程、编码过程都正确)。
0
1
分享到:
评论

相关推荐

    电子商务毕业论文

    §1.3.3 Hibernate体系结构 6 §1.4 Hibernate框架 8 §1.4.1 Spring简介 8 §1.4.2 Spring 核心技术 8 §1.4.3 Spring框架结构 9 第2章 系统分析 11 §2.1 系统可行性分析 11 §2.1.1 技术可行性 11 §2.1.2 社会...

    Hibernate初级学习

    Hibernate简单介绍,及其结构体系分析

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC...

    基于J2EE架构的生产管理系统设计

    系统基于B/S 多层Web 体系结构,在J2EE 平台上利用开源架构JSF、Spring、 Hibernate 等技术进行开发。按照软件工程方法,对造纸生产过程进行需求分析。使 用UML 建模工具,通过类图、用例图等对系统进行总体设计。...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC...

    论文研究-基于J2EE多层架构的Web开发框架研究.pdf

    在经典的J2EE四层体系结构的基础上增加数据持久层,提出了基于J2EE五层体系结构的Web开发框架;分析了基于Struts框架的J2EE架构中实现对象持久性的局限性,从中分离出对象持久层,并将Hibernate这个面向对象的轻量级...

    基于Struts和Hibernate技术的企业管理信息系统研究与开发

    J2EE 体系架构以及 MVC 设计模式的基础上,研究了 Struts 框架的体系架构; 通过引入对象持久化思想以及 ORM 组件技术的提出,详细研究了 Hibernate 的 相关技术;通过整合 Struts 和 Hibernate 技术,针对江苏省...

    教务管理系统

    2.2.2 J2EE体系结构介绍 3 2.2.3 Struts2和Hibernate简介 4 2.2.4 Ajax技术介绍 5 2.2.5 面向对象编程思想介绍 5 3 系统需求分析 6 3.1 功能需求分析 6 3.2 系统可行性分析 6 3.2.1 技术可行性分析 6 3.2.2 环境可行...

    基于struts+hibernat的会员管理系统设计与实现

    讨论了J2EE软件体系结构的发展和软件分层的优势与不足,研究了开发Web应用的Model 1和Mode12 (MVC)体系结构,比较了两者的优缺点。讨论了几种实现MVC设计模式的框架的模式特点、使用场合及优缺点,在此基础上详细讨论...

    基于JSP的儿童健康保健系统毕业设计论文

    本设计就是基于J2EE 体系结构下的WEB 开发,设计的目的是了解J2EE体系的多层结构以及其两大容器WEB容器和EJB容器,重点掌握WEB技术、Struts和Hibernate技术、熟悉其开发环境的构建和工具的使用。在开发中使用了目前...

    酒店前台处理系统(毕业设计)

    一个酒店前台处理系统,本文详细介绍了一个B/S模式的体系结构的酒店前台处理系统的设计和开发。通过使用Struts和Hibernate框架,快速构建了一个处理系统。在开发过程中,严格遵循软件工程的思想,进行分析和设计。...

    进销存信息管理系统毕业设计论文

    2.3.3 Hibernate的体系结构 9 2.4 Spring框架 11 2.4.1 Spring框架的概述 11 2.4.2 Spring框架的核心机制 12 2.5 SSH框架集成及其特点 13 2.5.1 SSH框架集成 13 2.5.2 SSH框架集成的特点 14 2.6 本章小结 16 第三章 ...

    低清版 大型门户网站是这样炼成的.pdf

    4.2.1 hibernate体系结构 196 4.2.2 hibernate api简介 197 4.2.3 配置hibernate 198 4.2.4 hibernate的映射配置文件 201 4.2.5 体验hibernate(会员管理) 203 4.3 hibernate的映射机制 212 4.3.1 hibernate...

    家教信息管理系统毕业设计

    4.2 系统体系结构设计 15 4.2.1系统的总体结构设计遵循原则 15 4.2.2体系结构 15 4.3 系统用例设计 16 4.3.1前端用户子系统 16 4.3.2后端管理员子系统 16 4.3.3 系统用例详细设计 16 4.4 数据库结构设计 19 4.4.1...

    基于Struts+ Spring+ Hibernate的高校学生管理系统的设计与实现

    通过对学生管理系统相关理论技术进行深入研究,充分系统需求分析的基础上,结合学校的实际情况,采用B/S开发模式的多层体系方法,应用轻量级的Java EE框架技术(Struts + Spring + Hibernate),将系统划分为表示层...

    基于Java Spring的股票交易管理系统毕业设计

    本说明书结合应用系统多层次体系结构发展的现状,对 Flex 、Spring 和 Hibernate 框架进行深入分析。应用 Flex 作为表示层实现,应用 Hibernate 作为持久层实现,并 结合 Spring 技术作为业务层实现,进行框架整合,...

    基于EXT技术的网上订单管理系统

    3.2.1 系统的体系结构 11 3.2.2 JDBC配置 12 3.3 网站系统分析 13 3.4 网站流程分析 15 3.5 网站总体结构 17 3.6 业务功能表 18 3.7 数据库设计 19 第四章 网上订单管理系统总体分析与设计 20 4.1 用户登陆 20 4.1.1...

    JSP毕业生就业信息管理系统论文

    2.2 体系结构 7 2.2.1 B/S模式 7 2.2.2 B/S与C/S模式比较 8 2.3 需求分析 9 2.3.1 整体分析 9 2.3.2 各个模块详细分析 10 2.4.3 系统功能结构图 12 第3章 毕业生就业系统设计 13 3.1 数据库设计 13 3.2 模块设计 17 ...

Global site tag (gtag.js) - Google Analytics