0 0

关于DAO 和 ORM5

我觉得DAO和ORM对象关系数据库映射的作用一样啊,都把对象映射到数据库中去了.
DAO模式中调用者传入一个实体对象,DAO负责操作相应数据库
ORM也是一样的啊,那DAO和ORM区别是什么?
DAO是不是也是一直ORM?难道只有用到了反射什么的才叫ORM?
DAO 
2009年1月11日 16:32

3个答案 按时间排序 按投票排序

0 0

采纳的答案

我个人的理解是这样的:
1.所谓DAO层一般是从系统分层结构出发来说的,即把数据存取操作到集中到DAO层,以便于维护和逻辑清晰,而且通常移植数据库的时候,如果系统合理分层了,则大部分工作将会集中在DAO层,这样比较容易操作
2.而ORM是针对开发而言的,就像面向过程和面向对象开发一样,是一种处理问题的方式。ORM的目的是使数据操作能像操作对象那样方便(其实有时候不一定更方便,更准确地说,应该是让程序员能够运用过面向对象的思想来操作数据对象),通常ORM会做到将数据库表映射成对象,封装一些基本的数据操作,以及提供一些如级联查询和保存之类帮助开发的扩展功能。
DAO层在实现时可以选择使用ORM框架,也可以使用直接的数据库操作,有时候因为性能要求只能直接操作数据的。
所以我认为DAO层是软件开发演变过程中对于分层概念的产物,目的是更清晰合理的管理软件开发过程过的代码和逻辑;而ORM是对数据操作思想的一种改变,不再是面对关系数据库中的表,而是统一视作对象。(个人理解,如果有误请见谅)

2009年1月11日 18:29
0 0

最主要的区别是,ORM(Object-Ralation mapping)将原来对数据库实体之间的关系转换为了对象之间,及具有了面向对象的种种好处:支持继承,多态等等好处。
应该说,ORM中有DAO,DAO可以采用ORM的形式,也可以直接通过其它方式,具体到Java里面的JDBC,.Net中通过DataProvider的方式。Java和.Net一般设计中都有DAO。

2009年1月11日 17:32
0 0

DAO是一直都有的; 而ORM是一种对象映射关系;
DAO可以采用ORM方式,采用对象方式操作访问数据库;
DAO也可以采用JDBC直接的方式,操作,访问数据库;

2009年1月11日 17:13

相关推荐

    经典 dao orm方法

    这是很经典的 dao orm 方法 魔乐技术2008的经典

    Spring框架Jar包里面有ioc、aop、mvc、dao、orm几项

    Spring还支持多种ORM框架,如Hibernate和MyBatis,这些框架可以进一步简化DAO层的开发。 5. **对象关系映射(ORM,Object-Relational Mapping)**: ORM是一种技术,它允许开发者使用面向对象的方式来操作数据库,...

    关于DAO的相关论文

    2. DAO实现类:接口的实现类会具体实现这些数据库操作,通常会结合ORM(对象关系映射)框架如Hibernate或MyBatis来简化数据库操作。这些实现类可以处理SQL语句的构建、执行以及异常处理。 3. ORM框架:ORM框架能够...

    orm工具策略和最佳实践源代码

    ORM工具的主要目标是消除数据访问层(DAO,Data Access Object)与业务逻辑层之间的耦合,通过对象模型抽象数据库操作,使代码更易于理解和测试。 描述中的“结合hibernate DAO示例”表明我们将深入研究如何利用...

    spring-orm源码

    Spring-ORM提供了对DAO层的支持,例如HibernateDaoSupport和JpaDaoSupport类。这些类提供了方便的方法,如getHibernateTemplate()或getEntityManager(),使得开发DAO接口变得简单。源码中可以查看这些类的实现,...

    Python-用于tornadomysql的业务DAO极大提高生产效率

    7. **测试和调试**: 在使用DAO进行数据库操作时,应确保有完善的测试用例来验证其功能和性能。可以使用单元测试框架如unittest或pytest,结合mock库模拟数据库操作,以便在不实际访问数据库的情况下进行测试。 8. *...

    ormlite使用中的dao简化写法

    ORMLite(Object-Relational Mapping Lite)是一款轻量级的Java ORM库,它允许开发者将数据库操作与对象模型相结合,从而简化Android应用中的数据访问层(DAO,Data Access Object)的编写工作。在传统的ORMLite DAO...

    简单的ORM类库,还算好用

    压缩包内的文件名提供了关于ORM库结构的一些线索: - "FastInvoke.cs":这可能包含了一个快速调用(Fast Invoke)的实现,用于提高方法调用的性能,特别是在ORM库中大量进行对象属性设置或读取时。 - "Data.Common....

    利用java反射、注解及泛型模拟ORM实现

    在Java编程中,反射、注解(Annotation)和泛型是三个非常重要的特性,它们各自...在实际项目中,成熟的ORM框架如Hibernate、MyBatis等已经实现了这些功能,但理解其工作原理对于优化和定制自己的ORM解决方案至关重要。

    ORM.rar_orm

    3. **数据访问对象(DAO)**:ORM框架提供数据访问对象,开发者可以通过调用DAO的方法来执行SQL操作,如查询、插入、更新和删除。 4. **会话管理**:ORM框架通常包含会话的概念,用于管理数据库连接的生命周期。在...

    spring-orm.jar

    - 配置实体管理和DAO层,定义数据访问对象并注入相应的持久化工厂。 六、实战示例 以Spring与Hibernate集成为例,创建一个简单的User实体,配置SessionFactory,并通过Spring的HibernateTemplate进行CRUD操作。通过...

    基于java 简易ORM 框架实现(二)

    总之,通过阅读这篇“基于Java简易ORM框架实现(二)”的文章,读者可以了解到ORM框架的基本原理和实现细节,这对于理解和使用现有的ORM框架(如Hibernate、MyBatis)或者自行构建ORM解决方案都有很大的帮助。...

    ormappingtool:将数据库表转换为 DAO 的 ORM 工具

    ORM工具这是一个 ORM java 代码生成器。 将数据库表转为Entity Class 、 DAO 、 DAOTest ,支持MySQL 、 SQL Server ,使用jdbc连接数据库,自动生成java代码。 此版本暂时只支持默认的自增主键

    基于Java动态代理和反射机制实现ORM

    在Java中,基于动态代理和反射机制实现ORM可以提高代码的可维护性和灵活性。本篇文章将深入探讨如何在Java环境下,结合MySQL数据库,利用动态代理和反射技术来实现简单的ORM框架。 首先,我们需要了解动态代理和...

    安卓Android源码——安卓Android轻量级sqlite orm框架.rar

    总结来说,"安卓Android源码——安卓Android轻量级sqlite orm框架.rar"是一个关于如何在Android项目中高效、便捷地使用SQLite数据库的源码示例。通过学习和理解这个框架,开发者可以更好地掌握Android中的数据存储,...

    org.springframework.orm.jar.zip

    - 创建DAO层:Spring的JdbcTemplate和HibernateTemplate使得创建数据访问对象(DAO)变得简单,只需编写SQL语句和映射结果即可。 - 事务控制:通过Spring的@Transactional注解,可以在方法级别控制事务,保证数据...

    数据库生成相关的DAO和相应的BEAN文件

    在软件开发过程中,数据访问对象(DAO)层和实体类(BEAN)是重要的组成部分,尤其是在使用Java进行后端开发时。DAO层主要用于处理数据库交互,而BEAN类则用于封装业务数据。本主题将详细讲解如何根据数据库结构自动...

    Android轻量级sqlite orm框架.rar

    - 数据访问对象(DAO):封装数据库操作的接口或抽象类,便于调用和扩展。 3. 轻量级SQLite ORM框架的选择: - Sugar ORM:简单易用,无需编写SQL,只需定义实体类并添加注解即可实现ORM映射。 - ActiveAndroid...

    Service层和DAO层解析

    在Hibernate等ORM(Object-Relational Mapping)框架中,DAO层可能只需要调用如`getHibernateTemplate().save()`, `update()`, `delete()`, `findyBy*()`等方法来完成数据操作。DAO层的设计应保持纯粹,避免包含复杂...

    DAO详解 详细讲述了DAO的使用

    - **解耦**:DAO模式将数据访问逻辑与业务逻辑分离,使得两者可以独立开发和测试。 - **复用**:通过接口,可以创建多个实现类,以支持多种数据库(如MySQL、Oracle),提高代码复用性。 - **易维护**:修改数据访问...

Global site tag (gtag.js) - Google Analytics