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
分享到:
相关推荐
1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据...
1.1 应用程序的分层体系结构 1 1.1.1 区分物理层和逻辑层 2 1.1.2 软件层的特征 3 1.1.3 软件分层的优点 4 1.1.4 软件分层的缺点 4 1.1.5 Java应用的持久化层 5 1.2 软件的模型 6 1.2.1 概念模型 7 1.2.2 ...
1.1 应用程序的分层体系结构 1 1.1.1 区分物理层和逻辑层 2 1.1.2 软件层的特征 3 1.1.3 软件分层的优点 4 1.1.4 软件分层的缺点 4 1.1.5 Java应用的持久化层 5 1.2 软件的模型 6 1.2.1 概念模型 7 1.2.2 ...
1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据...
1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据...
1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据...
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...
**1.3 J2EE 体系结构** - **1.3.1 Java 语言系统**:基于 Java 编程语言,为开发者提供了一套强大的开发工具和库。 - **1.3.2 客户端程序设计模型**:包括 Swing、AWT 和其他图形用户界面库,以及 Applet 技术。 - *...
**6.3.2 Hibernate的体系结构** - **核心组件**: - `SessionFactory`:创建`Session`的工厂; - `Session`:与数据库交互的主要接口。 **6.3.3 开发基于Hibernate的应用** - **步骤**: - 定义映射文件; - ...
5.3.1 Servlet在JavaEE中的结构体系 5.3.2 Servlet核心API 5.3.3 创建第一个Servlet对象 5.3.4 Servlet配置解析 5.3.5 使用Servlet处理业务逻辑 5.3.6 掌握Servelet处理流程 5.3.7 Eclipse快速创建Servlet 5.4 ...