`

Hibernate3.6.2 基本概念和体系结构

阅读更多

Hibernate ,一个开源的对象关系映射 ORM Object Relation Mapping )框架,即将关系型数据库转换为对象。 Hibernate JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思想来操作数据库(即采用面向对象的方式来操作关系型数据库),所以 Hibernate 可以应用在任何使用 JDBC 的场合。用一句话来说, Hibernate 是面向对象程序设计语言和关系型数据库之间的桥梁

 

说明:

轻量级和重量级概念:

轻量级架构:用一个包导一个包

重量级架构:只需要用一个,需要导入全部 jar

所以量级主要是看容器的依赖性所决定,依赖性越小,越轻量

基于 RDB 的持久层可选方案:

名称

优点

缺点

SQL/JDBC

成熟、流行,使用 DAO 模式

代码繁杂、可读性差、维护困难、移植困难

EntityBean

CMP EJB1.1 之后),未来的 EJB3

错误的设计,不可移植,依赖性强,不可序列化,不支持多态的关联查询

JDO

简单、透明、标准

不够成熟

Apache OJB

性能、稳定性

文档资源太少,支持标准太多成了负担

iBatis/ myBatis

可以控制更多的数据库操作细节,适用于遗留系统的改造和对既有数据库的复用

持久层封装不够彻底,只是一个 DBHelper

Hibernate

成熟、流行、功能强大,并逐渐发展成为 Java 持久层的标准

不够透明,执行效率不高

Hibernate 结构:

 

支持 JDBC JNDI JTA Java 事务 API ), Hibernate 中常用的类( Transaction Session SessionFactory

 

1、Configuration

负责管理Hibernate的配置信息,这些配置信息都是从配置文件hibernate.cfg.xml或者Hibernate.properties读取的,当然也可以自定义文件名称,只要在实例化Configuration的时候指定具体的路径就可以了。

2、SessionFactory

Configuration的实例会根据当前的配置信息,构造SessionFactory实例。

SessionFactory是线程安全的,一般情况下一个应用中一个数据库共享一个SessionFactory实例。
3、Session

一般的持久化方法(CRUD)都是通过Session来调用的,Session是非线程安全的
4、Transaction:事务管理
5、Query:查询的接口

 

说明:

持久化概念:

所谓的持久化就是将程序数据在持久状态和瞬时状态间转换的机制 。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、 XML 数据文件中等等。

1 )瞬时状态 (transient)

保存在内存中的数据。程序退出后,数据就消失了。

2 )持久状态 (Persisten)

在一定周期内保持不变就是持久化 , 持久化是针对时间来说的 . 数据库中的数据就是持久化了的数据 , 只要你不去删除或修改。比如在 IE 浏览器中一次 Session 会话中 Session 对象变量也是不变的 , Session 容器中持久化,对象持久化的方式有很多种 , 根据周期不同有 ,page,Session,Application

 

hibernate 为应用程序提供了高效的 O/R 关系映射和查询服务,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。他也是对对象持久化一个很好的实现。

Hibernate 映射结构:

将数据库中表通过 XML 映射找到对应的 POJO 类(相当于 VO

说明:

POJO VO DAO PO BO DTO 概念:

DAO ,最好理解,就是 data access object ,数据访问对象,主要用来封装对 DB 的访问;

1 POJO plain ordinary java object 无规则简单 java 对象。一个中间对象,可以转化为 PO DTO VO

POJO 持久化之后 ==> PO

POJO 传输过程中 ==> DTO

POJO 用作表示层 ==> VO

PO VO 都应该属于它。

2 VO :vvalue object 值对象 / view object 表现层对象。

A 、主要对应页面显示( web 页面 /swt swing 界面)的数据对象。

B 、可以和表对应,也可以不,这根据业务的需要。

:在 struts 中,用 ActionForm VO ,需要做一个转换,因为 PO 是面向对象的,而 ActionForm 是和 view 对应的,要将几个 PO 要显示的属性合成一个 ActionForm ,可以使用 BeanUtils copy 方法。

3 PO persistant object 持久对象 , 最形象的理解就是一个 PO 就是数据库中的一条记录。 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。

4 BO business object 业务对象 , 可以包括多个 PO ,通常需要将 BO 转化成 PO ,才能进行数据的持久化,反之,从 DB 中得到的 PO ,需要转化成 BO 才能在业务层使用。

关于 BO 主要有三种概念

A 、只包含业务对象的属性;

B 、只包含业务方法;

C 、两者都包含。

5 DTO TO Data Transfer Object 数据传输对象

A 、用在需要跨进程或远程传输时,它不应该包含业务逻辑。

B 、比如一张表有 100 个字段,那么对应的 PO 就有 100 个属性(大多数情况下, DTO 内的数据来自多个表)。但 view 层只需显示 10 个字段,没有必要把整个 PO 对象传递到 client ,这时我们就可以用只有这 10 个属性的 DTO 来传输数据到 client ,这样也不会暴露 server 端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为 VO

Hibernate 中,最核心的概念就是对 PO 的状态管理。一个 PO 有三种状态:

   1. 未被持久化的 VO ,此时就是一个内存对象 VO ,由 JVM 管理生命周期。

   2. 已被持久化的 PO ,并且在 Session 生命周期内,此时映射数据库连接,由数据库管理生命周期。

   3. 曾被持久化过,但现在和 Session 已经托管( detached )了,以 VO 的身份在运行。它还可以进入另一个 Session ,继续 PO 状态管理。

需要注意的是, PO 最好只在持久层使用,如果脱离持久层到处使用,会给 Hibernate 带来不小的 PO 对象维护开销。

 

 

 

 

 

  • 大小: 13 KB
  • 大小: 8 KB
分享到:
评论

相关推荐

    hibernate-distribution-3.6.2.Final-dist

    总之,`hibernate-distribution-3.6.2.Final-dist`源码包是学习和研究Hibernate的好资料,通过深入研究源代码,开发者不仅可以掌握ORM的基本原理,还能提升对Java和数据库设计的理解,为开发更高效、更稳定的应用...

    hibernate-distribution-3.6.2 API及jar包

    这份PDF文档详细介绍了Hibernate的核心概念、配置、实体映射、查询语言(HQL)以及事务和缓存管理等内容。通过阅读这份文档,开发者可以了解到如何将Java对象与数据库表进行映射,实现数据的持久化,从而避免直接...

    Hibernate3.6.2API

    Hibernate3.6.2API开发文档。chm格式的。

    Hibernate 3.6.2 API

    Hibernate 3.6.2 API,根据官方文档转换而来,雅黑美化版

    hibernate3.6基本jar包

    《Hibernate 3.6 基本jar包详解》 Hibernate是Java开发中的一款非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库。Hibernate 3.6是其一个稳定且广泛...

    hibernate API 3.6.2.CHM

    hibernate API 3.6.2.CHM 非常详细的hibernate api

    hibernate3.2+mysql+log4j

    【hibernate3.2+mysql+log4j】是一个经典的Java开发组合,常用于构建基于JDBC的持久层框架,结合关系型数据库MySQL和日志管理库log4j。这个压缩包可能包含了运行一个使用Hibernate 3.2、MySQL数据库和log4j日志系统...

    hibernate-distribution-3.6.2.Final-dist jar包

    这个`hibernate-distribution-3.6.2.Final-dist`版本的jar包是一个开发基本包,包含了用于开发 Hibernate 应用的所有必要组件。 在Hibernate 3.6.2.Final版本中,主要包含以下核心知识点: 1. **对象关系映射(ORM...

    hibernate-tools-3.6.2.Final.jar

    hibernate-tools-3.6.2.Final

    maven3.6.2版本

    Maven 3.6.2 是一个流行的构建工具,主要用于管理Java项目的构建、依赖和生命周期。这个版本在Maven系列中占有重要地位,因为它提供了许多改进和新特性,使得开发人员能够更高效地管理和构建他们的项目。 首先,让...

    maven3.6.2资源包

    Maven 3.6.2 是一个稳定的版本,包含了多项优化和改进,旨在提高开发效率和可靠性。本文将详细介绍 Maven 的核心概念以及 `settings.xml` 文件的详细设置。 **一、Maven 的核心概念** 1. **项目对象模型(Project ...

    最新版本Python3.6.2

    - `python-3.6.2.exe`是Windows平台的安装程序,包含了Python解释器、标准库以及一些基本的开发工具。 - 安装过程中可以选择自定义安装路径、是否添加Python到系统路径以及是否安装IDLE等组件。 总的来说,Python...

    apache-maven-3.6.2_maven_

    它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和依赖关系。Maven 的核心理念是通过标准化的构建生命周期和插件机制,使得开发过程更加简单、高效。 在“apache-maven-3.6.2”...

    ckeditor-java-3.6.2

    CKEditor 3.6.2是该编辑器的一个特定版本,它在前一版本的基础上进行了优化和改进,以提升用户体验和功能。 CKEditor的主要特点包括: 1. **丰富的编辑功能**:CKEditor支持多种文本格式处理,如字体、字号、颜色...

    Python3.6.2 64位系统安装包

    在安装Python 3.6.2之前,首先需要了解一些基本概念: 1. **Python解释器**:Python是一种解释型语言,它的执行依赖于Python解释器。Python 3.6.2的安装包`python-3.6.2-amd64.exe`就是这个解释器,用于运行Python...

    apache-maven-3.6.2.zip

    它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和依赖关系。Maven 3.6.2是Maven的一个特定版本,它包含了各种改进和修复,以提供更稳定和高效的构建环境。 在"apache-maven-...

    jquery-3.6.2.js 和 jquery-3.6.2.min.js 【jquery-3.6.2包合集】

    jquery-3.6.2.js 和 jquery-3.6.2.min.js 【jquery-3.6.2包合集】 jquery-3.6.2包合集下载 包含: jquery-3.6.2.js jquery-3.6.2.min.js jQuery是一个快速、简洁的JavaScript框架,封装JavaScript常用的功能代码,...

    python-3.6.2-官方-docs-html.zip

    1. **语言参考**:这部分详细介绍了Python的语法结构,包括变量、表达式、语句、函数、类、模块等核心概念。3.6.2版本引入了新的语法特性,如f-string(格式化字符串字面量),这是一种更直观的字符串格式化方式,...

    ice-3.6.2.jar

    ice-3.6.2.jar,ice-3.6.2.jarice-3.6.2.jar,ice-3.6.2.jar

Global site tag (gtag.js) - Google Analytics