网友 [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对象为业务对象提供具体的存取数据逻辑。
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对象为业务对象提供具体的存取数据逻辑。
- 网友 [WOLFU(魔兽.p)]对持久层的解释,留下学习
- MyBatis持久层解释小结(个人)
- 我对持久层的一点看法
- Spring的学习--SpringMVC的四个基本注解annotation(控制层,业务层,持久层)
- SSH学习---表现层、持久层、业务层(转载)
- Spring总结4—对持久层的支持(附:事务管理)
- 写持久层时对Handler进行的总结
- 对SSH三种框架及表示层、业务层和持久层的理解
- 关于C++的学习,对一位网友的回复
- 20140501-逐层学习 有效的解释
- 搞笑一下看网友对程序启动的慢的解释
- CSDN上一网友对.net中委托的生动解释
- 浅谈魔兽易主对玩家的影响
- 对持久层与业务层分离思想的类比化理解
- 由一个网友的问题想到的(指针作为形参, p++ 和 p + 1的区别 )
- \t\t由一个网友的问题想到的(指针作为形参, p++ 和 p + 1的区别 )
- 对部分网友的回复
- 网友对SL的评论
- 禁止抢占
- default lib conflicts with use of other libs
- linux汇编
- 记几个容易忘的oracle 函数
- 考研作文讲义
- 网友 [WOLFU(魔兽.p)]对持久层的解释,留下学习
- 人生值得珍藏的42句画
- Java程序员需要了解的几个开源协议介绍
- 常见电缆型号说明及用途
- 第一次失败的面试
- IBM Cognos8 处理父子维度浅析
- Google翻译一点有趣的事
- 我的c#之路
- .NET中如何访问被系统保护的文件夹