`
ideage
  • 浏览: 319605 次
社区版块
存档分类
最新评论

数据访问策略和ORM

阅读更多

背景: 我开发MIS应用程序.使用DOT.NET.喜欢对象编程.性能很重要.

由于以上要求,我考察了很多程序访问数据的方法.一种是ORM,一种是直接使用ADO.NET.当然数据访问的问题要从数据表一直研究到用户的界面才算完成任务.

首先,因为使用对象,所以ORM吸引了我.研究了很多ORM.NET,.ibatis.net的DataMap很好用.用它调用存储过程很好.还有速马的XORMS,是最简单好用的.还有其他的很多.但他们都有共同的问题:数据绑定.使用ORM之后,微软的DataSet,DataView等数据集合就不能用了,而是使用带IList接口的对象列表,这是数据处理程序的最大问题,我有很多数据会显示.

然后我分析了微软的例子.典型的是Fitch and Mather,PetShop,还有Duwamish.他们都直接使用了ADO.NET.FM重点使用了存储过程和DataTable,PetShop使用的是DataReader,Duwamish使用强类型的DatSet和存储过程.

结论:
数据库方面:根据程序的要求,首先必须使用存储过程.
1.使用存储过程可以将处理和数据联系在一起,这是高性能的关键因素.
2.存储过程减少了网络调用.
3.存储的缺点是开发调试麻烦,升级管理不方便.

在DotNet的客户程序上:因为数据绑定和对象操作的因素,有必要区别对待.
1.业务逻辑上的对象操作,仅使用了较少的对象,这适合使用DataReader和利用存储过程快速读取来初始化和更新对象的状态.这是轻量操作的典型,如PETSHOP. 当然这也为我们使用对象技术的人很多的安慰(我不太想用dataset,喜欢Robert C Martin的对象技术,轻量的对象,但我是在做开发,不是研究,能用的软件才是最重要的.).
2.数据集合上的操作:这里使用了很多数据,如果再使用对象或者对象Collection,就不如DataSet的效率高了.所以要使用存储过程初始化强类型的DataSet, DataTable, DataRow.

后记:必须简化存储过程和DataSet的开发.最好能生成代码的模版,这样才好.所以我发现最好使用CodeSmith.
2005 11 11 10:55:36
分享到:
评论

相关推荐

    高效Java数据访问组件Uncode-DAL全功能源码

    Uncode-DAL是一个功能全面的Java数据访问层组件,它深度整合了MyBatis、Spring JDBC以及Hibernate等主流ORM框架,致力于为开发者提供一套简便、高效的数据操作解决方案。该组件支持多数据源配置,能够实现读写分离、...

    深度解析ShardingJDBC:Java开发者的分库分表利器

    ShardingJDBC通过数据分片和读写分离,使Java应用能透明地访问分库分表的多个数据源。它在JDBC层提供服务,无需额外部署,兼容各种ORM框架​​。与ShardingProxy不同,ShardingJDBC在客户端执行分库分表逻辑,提供...

    分步骤快速可控执行 IO 操作的轻便框架.zip

    内部封装 SQLAlchemy ORM 框架,数据模型可与 WEB 相关框架进行组合。框架也可处理同步函数,快速定位错误步骤。 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并...

    Hibernate实战(第2版 中文高清版)

     16.2.1 泛型的数据访问对象模式   16.2.2 实现泛型CRUD接口   16.2.3 实现实体DAO   16.2.4 利用数据访问对象   16.3 命令模式简介   16.3.1 基础接口   16.3.2 执行命令对象   16.3.3 命令模式的...

    关系数据库设计(1).doc

    分布独立性 不管数据在物理是否分布式存储,或者任何时候改变分布策略,RDBM S的数据操纵子语言必须能使应用程序和终端活动保持逻辑上的不变性。 12. 非破坏性法则 如果一个关系数据库系统支持某种低级(一次处理...

    关系数据库设计(2).doc

    分布独立性 不管数据在物理是否分布式存储,或者任何时候改变分布策略,RDBMS的数 据操纵子语言必须能使应用程序和终端活动保持逻辑上的不变性。 非破坏性法则 如果一个关系数据库系统支持某种低级(一次处理单个...

    关系数据库设计.doc

    不管数据在物理是否分布式存储,或者任何时候改变分布策略,RDBM S的数据操纵子语言必须能使应用程序和终端活动保持逻辑上的不变性。 12. 非破坏性法则?如果一个关系数据库系统支持某种低级(一次处理单个记录)语言...

    关系数据库设计(3).doc

    不管数据在物理是否分布式存储,或者任何时候改变分布策略,RDBM S的数据操纵子语言必须能使应用程序和终端活动保持逻辑上的不变性。 12. 非破坏性法则?如果一个关系数据库系统支持某种低级(一次处理单个记录)语言...

    ASP.NET设计模式-杨明军译(源码)

    7.2 数据访问策略 7.2.1 Repository模式 7.2.2 Data Access Objects模式 7.3 数据访问模式 7.3.1 Unit of Work模式 7.3.2 数据并发控制 7.3.3 Lazy Loading和Proxy模式 7.3.4 Identity Map模式 7.3.5 Query...

    SpringBoot项目时间管理系统.zip

    5. 报告生成:系统可以根据用户的任务完成情况和时间分配自动生成报告,便于用户回顾和优化时间管理策略。 6. 提醒和通知:对于即将到期或重要的任务,系统可以发送提醒和通知,确保用户不会错过任何关键事项。 7....

    Java思维导图xmind文件+导出图片

    图解Redis中的AOF和RDB持久化策略的原理 redis读写分离架构实践 redis哨兵架构及数据丢失问题分析 redis Cluster数据分布算法之Hash slot redis使用常见问题及性能优化思路 redis高可用及高并发实战 缓存击穿...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     22.1.2 持久化层的缓存的并发访问策略  22.2 Hibernate的二级缓存结构  22.3 管理Hibernate的第一级缓存  22.4 管理Hibernate的第二级缓存  22.4.1 配置进程范围内的第二级缓存  22.4.2 配置集群范围内的第二...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     22.1.2 持久化层的缓存的并发访问策略  22.2 Hibernate的二级缓存结构  22.3 管理Hibernate的第一级缓存  22.4 管理Hibernate的第二级缓存  22.4.1 配置进程范围内的第二级缓存  22.4.2 配置集群范围内的第二...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     22.1.2 持久化层的缓存的并发访问策略  22.2 Hibernate的二级缓存结构  22.3 管理Hibernate的第一级缓存  22.4 管理Hibernate的第二级缓存  22.4.1 配置进程范围内的第二级缓存  22.4.2 配置集群范围内的第二...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     22.1.2 持久化层的缓存的并发访问策略  22.2 Hibernate的二级缓存结构  22.3 管理Hibernate的第一级缓存  22.4 管理Hibernate的第二级缓存  22.4.1 配置进程范围内的第二级缓存  22.4.2 配置集群范围内的第二...

    asp.net知识库

    asp.net 2.0-实现数据访问(1) ASP.NET 2.0 新特性 .NET 2.0里使用强类型数据创建多层应用 在MastPage中引用脚本资源 2.0正式版中callback的一些变化+使用示例(ASP.NET 2.0) asp.net 2.0 新特性 Visual Web ...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    数据访问代码负责把实体域对象持久化到关系数据库中。 2.1 直接通过JDBC API来持久化实体域对象 21 .2.2 ORM简介 27 2.2.1 对象-关系映射的概念29 2.2.2 ORM中间件的基本使用方法 31 2.2.3 常用的ORM中间件 33 ...

    精通Hibernate:对象持久化技术第二版part3

    数据访问代码负责把实体域对象持久化到关系数据库中。 2.1 直接通过JDBC API来持久化实体域对象 21 .2.2 ORM简介 27 2.2.1 对象-关系映射的概念29 2.2.2 ORM中间件的基本使用方法 31 2.2.3 常用的ORM中间件 33 ...

    C++后端学习的技术栈

    5.数据库操作:熟悉SQL语言,能使用ODBC、JDBC等数据库接口或ORM框架(如SQLite、MySQL、PostgreSQL等)进行数据访问、存储与管理。 6.Web服务开发:了解RESTful API设计原则,能使用Web服务器库(如Poco, Boost....

Global site tag (gtag.js) - Google Analytics