网友 [WOLFU(魔兽.p)]对持久层的解释,留下学习

来源:互联网 发布:java jlabel设置文本 编辑:程序博客网 时间:2024/04/29 04:41
  一:在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对象为业务对象提供具体的存取数据逻辑。
原创粉丝点击