`
明日天涯
  • 浏览: 35655 次
  • 性别: 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
分享到:
评论

相关推荐

    Hibernate 体系结构与工作原理.txt

    通过上述分析,我们可以清晰地了解到 Hibernate 的体系结构及其工作原理。这些知识点对于理解 Hibernate 如何高效地处理数据库操作至关重要,同时也为我们提供了使用 Hibernate 时需要注意的关键点。

    《J2EE体系结构及程序设计》课程评价分析

    《J2EE体系结构及程序设计》是一门针对计算机科学与技术专业学生的选修课程,主要目的是培养学生在Java EE平台上进行Web程序设计和企业应用开发的能力。课程在大学三年级第一学期开设,考虑到学生已具备一定的Java...

    hibernate-3.5.6 源码

    通过分析Hibernate 3.5.6的源码,开发者可以了解到其内部的事务处理、查询优化、缓存策略等实现细节,这对于提升Java数据库编程技能,或者进行ORM框架的二次开发具有重要意义。这个源码库是一个宝贵的教育资源,可以...

    精通Eclipse Web开发--Java体系结构、工具、框架及整合应用

    《精通Eclipse Web开发--Java体系结构、工具、框架及整合应用》这本书是为Java开发者提供的一本深度学习Eclipse IDE、Web开发技术以及相关工具和框架的指南。以下是本书涵盖的一些关键知识点: 1. **Java体系结构**...

    传智播客 hibernate笔记(word+pdf+源码)

    【pdf讲义】通常会以更加系统和结构化的方式呈现 Hibernate 的知识体系,包含框架的安装、配置、映射文件的细节、事务处理、缓存机制(一级缓存和二级缓存)、性能优化策略等。此外,讲义可能还会涉及如何使用 ...

    hibernate 3.2中文手册 中文文档

    #### 第2章:体系结构(Architecture) - **2.1 概况(Overview)** - 概览Hibernate的整体架构,包括核心组件及其交互方式。 - **2.2 实例状态** - 详细解释Hibernate中的实例状态管理机制,如瞬态、持久化、分离等...

    JSF+Spring+Hibernate整合图文教程详解

    #### 一、多层体系结构与JSF+Spring+Hibernate的整合 **多层体系结构**是一种高级的Web应用程序架构方式,其核心在于通过不同的层次来实现软件系统的各个部分,从而提高系统的可维护性、可扩展性和可重用性。在本文...

    accp hibernate 在线拍卖系统

    ACCP课程提供的知识体系和Hibernate框架的应用,为系统开发提供了有力的技术支持。通过对用户、拍卖品、出价等关键环节的精细处理,可以打造出一个既稳定又高效的在线拍卖平台。在实际开发过程中,还需要不断学习和...

    软件体系结构复习

    ### 软件体系结构复习知识点 #### 一、框架模式 框架模式是软件工程中的一个重要组成部分,它指的是为了简化软件开发过程而预先定义的一种结构化的解决方案。在本复习资料中提到了几种常见的框架模式: 1. **MVC ...

    Hibernate API.rar

    一、Hibernate体系结构 Hibernate主要由Session、SessionFactory和Configuration三个核心组件构成。SessionFactory是线程安全的,用于创建Session实例,而Session则代表了与数据库的一次会话,它是所有数据库操作的...

    Hibernate框架在电子商务网站中的应用研究.doc

    本文主要研究了Hibernate框架在电子商务网站中的应用,讨论了面向对象技术、数据库技术和组件复用技术在软件开发中的应用,并分析了Hibernate框架的体系结构和基本原理。 在软件开发领域,面向对象技术、数据库技术...

    Struts和Hibernate技术实现电子商务系统(电子书)

    本书第三章从开发环境搭建入手,逐步引导读者了解Hibernate的体系结构、配置文件和核心概念,如事务管理和对象关系映射。特别地,书中提到了Middlegen和hbm2java工具,它们能够自动生成实体类代码和映射文件,大大...

    JSF+Spring+Hibernate的实例讲解.doc

    - **高级体系结构设计**:采用多层架构,将应用划分为客户端、表示层、业务逻辑层、集成层和 EIS 层。每个层都有明确的职责,如客户端负责展示,业务逻辑层处理核心业务规则。 - **技术选型**:根据需求选择合适的...

    最经典的hibernate教程

    #### 一、Hibernate概述及体系结构 **1.1 Hibernate简介** Hibernate 是一款开源的对象关系映射 (Object Relational Mapping, ORM) 框架,用于 Java 应用程序与关系型数据库之间的交互。通过 ORM 技术,Hibernate ...

    武汉理工大学软件设计与体系结构实验报告-图文-2.docx

    该实验报告详细介绍了武汉...实验报告通过这个案例展示了软件设计与体系结构的基本实践,包括需求分析、设计、实现和测试的整个过程,强调了面向对象方法论和框架应用的重要性,为后续的软件开发提供了实际操作的参考。

    毕业论文(设计)--hibernate框架在电子商务网站中的应用研究.doc

    介绍了通常的数据访问模式,介绍了目前比较流行的 ORM 中间件,然后详细阐述了 Hibernate 框架的体系结构和基本原理,最后通过应用 Struts 和 Hibernate 框架技术开发网上购物系统,研究和分析了Hibernate 技术在...

    Hibernate 中文手册

    #### 三、Hibernate 体系结构 - **概况**:概述 Hibernate 的整体架构设计,包括核心组件和其交互方式。 - **实例状态**:解释持久化对象的不同状态,如瞬时态、持久态和游离态。 - **JMX 整合**:介绍如何通过 JMX ...

Global site tag (gtag.js) - Google Analytics