持久层数据存取技术

一:在 JAVA 领域,数据存取技术有多种。
1、  Jdbc 。用 JAVA 实现关系数据库存取的基础。优点:直接和数据库关联,存取速度快,支持多数据库,细粒度存取。缺点:不支持面向对象存取。在应用程序中,要嵌套复杂 SQL 命令,事务性语句硬编码到程序中,不便以后维护。程序开发复杂。
2、  EntityEJB Sun J2EE 框架的重量级持久层数据存取技术。优点:可支持简单(无法支持继承,多态)面向对象设计,标准的。支持分布式处理。透明持久。容器管理。缺点:一个 EntityEJB 组件需要复杂复杂接口, remote/local 接口与其实现之间无法保证编译时的一致性。性能问题。开发周期长。
3、  Jdo 。轻量级持久框架。优点: o/r mapping 实现,全面支持面向对象设计。弥补 EntityEJB 的不足。用 Java 对象取得和保存数据库中的数据。标准的。透明持久。容器管理。缺点:只支持本地调用,缺乏移植性。
4、  Hibernate 。开源轻量级实现的持久框架。优点: o/r mapping 实现,灵活配置。基于普通 java 对象实现持久。对 JDBC 的轻量级封装实现。支持复杂对象结构。缺点:只支持本地调用,缺乏移植性。
二: DAO 设计模式应用。
由于数据存储介质(数据源如,文件系统、关系数据库、 LDAP 、其他应用程序等)多样,企业应用程序中,常常涉及多个存储介质间的数据存取。为减少企业应用程序的复杂性,持久层框架设计便出现。持久层主要目的:在一逻辑层上,抽象数据的持久,使客户层无须知道底层具体的存储介质,所有针对某个存储介质的数据存取都在持久层封装并实现。其强大之处在于,可以抽象基础存储介质的实现。 Jdo Hibernate,EntityEJB 都是持久层实现技术,不同之处在于,支持存储介质多少,面向对象存储程度,事务管理,灵活性,存取性能等。
 
jdo,hibernate 轻量级框架完全支持面向对象持久,似乎,业务逻辑层可以直接和持久层接触。由于业务逻辑层复杂,业务对象并不需要知道在某一业务过程中,持久层的逻辑(即:持久层是如何存取数据的)。我们用 DAO 模式,分离业务逻辑层和持久层,使业务对象存取数据时,只要调用具体 DAO 的存取方法( CRUD ),方法的实现由具体 DAO 实现处理,业务对象不关心实现细节。其主要优点: 1 、完全分离持久层逻辑和业务逻辑层。 2 、为业务层提供抽象接口,具体数据存取由 DAO 实现层实现,从而,抽象实现细节。 3 DAO 模式配合 Service Locator 模式,实现数据的缓存等,处理程序性能问题。 4 、统一处理持久层的抛出异常。 5 、处理性能、事务等问题。 6 、具体 DAO 实现,可解决数据访问的粒度问题。
 
在复杂项目中,使用 DAO 模式完全分离业务层,和持久层,既:数据库 >> 持久框架 >>DAO>> 业务层。
选择 EntityEJB 持久实现时,由于 CMP 容器带来的透明性,事务管理等特性,简单项目中,可不用 DAO 模式。涉及多数据源的复杂项目中,用 DAO 模式分离业务逻辑和持久层,可增强系统灵活性,和可维护性。
选择轻量级持久框架,其面向对象数据存取技术,透明的持久,在某中程度上可减少业务对象对数据层的了解。在仅有简单逻辑的小项目中,可不用 DAO 模式,以减少层,提高性能。在有复杂逻辑的项目中,用 DAO 模式,清晰的分离逻辑层,持久层,可带来维护上的好处。
JDBC 实现数据存取时,使用 DAO 模式完全抽象数据源。隐藏具体数据库存取。但要在实现中维护事务,锁处理,主键生成,性能等问题。
  在具体应用过程中, DAO 模式,可配合工厂模式,或抽象工厂模式,工厂抽象多个数据源,并生产多个具体的 DAO 对象。 DAO 对象为业务对象提供具体的存取数据逻辑。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值