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
结构:
![](http://dl.iteye.com/upload/attachment/0070/0296/6b5999a3-a1cd-3dff-97b1-2e4ba1949e6b.png)
支持
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
映射结构:
![](http://dl.iteye.com/upload/attachment/0070/0298/8aeb7ea8-2390-3de9-9185-ed347b5397ef.png)
将数据库中表通过
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
对象维护开销。
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0070/0296/6b5999a3-a1cd-3dff-97b1-2e4ba1949e6b-thumb.png)
- 大小: 13 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0070/0298/8aeb7ea8-2390-3de9-9185-ed347b5397ef-thumb.png)
- 大小: 8 KB
分享到:
相关推荐
总之,`hibernate-distribution-3.6.2.Final-dist`源码包是学习和研究Hibernate的好资料,通过深入研究源代码,开发者不仅可以掌握ORM的基本原理,还能提升对Java和数据库设计的理解,为开发更高效、更稳定的应用...
这份PDF文档详细介绍了Hibernate的核心概念、配置、实体映射、查询语言(HQL)以及事务和缓存管理等内容。通过阅读这份文档,开发者可以了解到如何将Java对象与数据库表进行映射,实现数据的持久化,从而避免直接...
Hibernate3.6.2API开发文档。chm格式的。
Hibernate 3.6.2 API,根据官方文档转换而来,雅黑美化版
《Hibernate 3.6 基本jar包详解》 Hibernate是Java开发中的一款非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库。Hibernate 3.6是其一个稳定且广泛...
hibernate API 3.6.2.CHM 非常详细的hibernate api
【hibernate3.2+mysql+log4j】是一个经典的Java开发组合,常用于构建基于JDBC的持久层框架,结合关系型数据库MySQL和日志管理库log4j。这个压缩包可能包含了运行一个使用Hibernate 3.2、MySQL数据库和log4j日志系统...
这个`hibernate-distribution-3.6.2.Final-dist`版本的jar包是一个开发基本包,包含了用于开发 Hibernate 应用的所有必要组件。 在Hibernate 3.6.2.Final版本中,主要包含以下核心知识点: 1. **对象关系映射(ORM...
hibernate-tools-3.6.2.Final
Maven 3.6.2 是一个流行的构建工具,主要用于管理Java项目的构建、依赖和生命周期。这个版本在Maven系列中占有重要地位,因为它提供了许多改进和新特性,使得开发人员能够更高效地管理和构建他们的项目。 首先,让...
Maven 3.6.2 是一个稳定的版本,包含了多项优化和改进,旨在提高开发效率和可靠性。本文将详细介绍 Maven 的核心概念以及 `settings.xml` 文件的详细设置。 **一、Maven 的核心概念** 1. **项目对象模型(Project ...
- `python-3.6.2.exe`是Windows平台的安装程序,包含了Python解释器、标准库以及一些基本的开发工具。 - 安装过程中可以选择自定义安装路径、是否添加Python到系统路径以及是否安装IDLE等组件。 总的来说,Python...
它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和依赖关系。Maven 的核心理念是通过标准化的构建生命周期和插件机制,使得开发过程更加简单、高效。 在“apache-maven-3.6.2”...
CKEditor 3.6.2是该编辑器的一个特定版本,它在前一版本的基础上进行了优化和改进,以提升用户体验和功能。 CKEditor的主要特点包括: 1. **丰富的编辑功能**:CKEditor支持多种文本格式处理,如字体、字号、颜色...
在安装Python 3.6.2之前,首先需要了解一些基本概念: 1. **Python解释器**:Python是一种解释型语言,它的执行依赖于Python解释器。Python 3.6.2的安装包`python-3.6.2-amd64.exe`就是这个解释器,用于运行Python...
它基于项目对象模型(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包合集下载 包含: jquery-3.6.2.js jquery-3.6.2.min.js jQuery是一个快速、简洁的JavaScript框架,封装JavaScript常用的功能代码,...
1. **语言参考**:这部分详细介绍了Python的语法结构,包括变量、表达式、语句、函数、类、模块等核心概念。3.6.2版本引入了新的语法特性,如f-string(格式化字符串字面量),这是一种更直观的字符串格式化方式,...
ice-3.6.2.jar,ice-3.6.2.jarice-3.6.2.jar,ice-3.6.2.jar