1. 对象持久化
对象的持久化就是把内存中对象形式的业务数据,转换成数据库中的关系数据形式的业务数据。广义理解,对象的持久化还包括内存与关系数据库之交换业务数据的各种操作。
2. 对象持久化模式
1. 直接通过JDBC(java database connectivity) API来持久化实体域对象
实体域对象的持久化最终必须通过数据库访问代码来实现。java.sql包中提供了JDBC API,常用的接口和类有以下内容:
DriverManager: 驱动程序挂历器,负责创建数据库连接
Connection:代表数据库连接
Statement:
负责执行SQL语句
PreparedStatement:负责执行SQL语句,具有预定义SQL语句的功能
ResultSet:代表SQL查询语句的查询结果集
缺点:
1. 实现业务逻辑和数据库访问代码掺杂在一起
2. 程序代码中嵌入面向关系的SQL语句,开发人员不能完全运用面向对象的思维来编写程序
3. 业务逻辑被迫与关系数据模型绑定。如果关系数据模型变化,如表结构发生变动,就需要修改所有的相关SQL语句
2. ORM(object - relation Mapping)中间件模式
1) ORM(对象关系映射)模式指在一个组件中负责所有实体域对象的持久化,封装数据访问细节。
2) ORM中间件采用元数据描述对象-关系映射细节,元数据通常采用XML格式文件,并且存放在专门的对象 - 关系 映射文件中。
3) 常用的ORM中间件:hibernate, toplink, torque等。
3. 实体域其他的持久化模式
实体域持久化模式除了ORM外,还有以下几种模式:
1) 主动域对象模式
该模式是在实体域对象中封装了关系数据模型和数据的访问细节。
2) JDO模式
Java Data Objects 是Sun公司制定的描述对象持久化语义的标准API.,该模式下,整个应用分为四层。
3) CMP模式
CMP(Container-managed Persistence) 表示由EJB容器来管理实体EJB的持久化,EJB容器封装了对象-关系的映射和数据访问细节。
CMP与ORM的相似点:
a:都提供了对象-关系映射服务
b:都把对象持久化的任务从业务逻辑中分离出来
区别:
a:CMP负责持久化实体EJB组件,而ORM负责持久化POJO,POJO是普通的基于JavaBean的实体域对象。