知识大全 剖析.Net下的数据访问层技术(4)
Posted 知
篇首语:忘记你是个女孩,然后像爷们一样去奋斗!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 剖析.Net下的数据访问层技术(4)相关的知识,希望对你有一定的参考价值。
剖析.Net下的数据访问层技术(4) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Microsoft ObjectSpaces 这是一个在几年前就让众多 NET guy伸长脖子激动不已的技术 就作者来说 那个时候 只要一提起这个话题 一般都是在J EE guy的嘲笑声中悻悻而归 恨不能自己也搞个ENB(相对EJB)或者NCMP(相对CMP)什么的 终于 我们可以在 NET Framework (可在VS NET Whidbey或Yukon中找到 目前都是Beta版本)中一睹其 芳容 了J 首先 让我们看看用ObjectSpaces写出的代码是什么样子(依然使用上面的employee例子) // 初始化ObjectSpace SqlConnection conn = new SqlConnection( Data Source=localhost; Integrated Security=SSPI; Database=Northwind ); ObjectSpace os = new ObjectSpace( map xml conn); // 根据EmployeeID返回其Title Employee oEmp = (Employee)os GetObject ( new ObjectQuery(typeof(Employee) ID = )); // 注意 实际字段名为 EmployeeID string strTitle = oEmp Title; …… // 根据 City 返回所有符合条件的 Employee ObjectSet oSet = os GetObjectSet( new ObjectQuery(typeof(Employee) City = Seattle )); // 注意 返回的不是DataTable 而是对象集合 foreach (Employee oEmp in oSet) …… // 注意 在这里可以对oEmp做任何操作 } 针对上面第二段代码 还有一种解决方案 就是以ObjectReader替代ObjectSet 这其中所包含的差异 类似于ADO NET (包含ObjectSpacesd的ADO NET又称为ADO NET )中的DataSet / DataTable与DataReader间的不同(不得不佩服Microsoft在前后一致性上表现出的老谋深算J) 仔细分析上面的代码 就可以发现它和前面讨论的OJB有惊人的相似点(OJB中作者只画了基本类图 但足可看出这种思想上的接近)! 例如 ObjectSpace类基本上提供了OJB中的QueryFacade功能 ObjectQuery类基本上提供了OJB中的Criteria功能 同时 两种解决方案又不约而同的使用了配置文件来存储O/R Mapping信息 而应用程序一般也就通过这 个类进行数据操作 非常方便 稍微有些区别的可能是在数据返回格式上(这一点 ObjectSpaces考虑得更细致 可以参考上面的代码) 但这已经对实际的代码实现影响不大了 如果将ObjectSpaces下的调用代码与前面给出的那段在ADO NET下撰写的代码作个比较 不难看出 ObjectSpaces给出的代码更易阅读和理解 就算不熟悉ADO NET整体架构的开发人员 也可轻松上手(唯一涉及RDBMS的代码只有建立数据库连接时需要) 对于已经熟悉ADO NET或曾接触过O/R Mapping(如 J EE下的Hibernate)的朋友来说 真可谓小菜一碟! 从 NET Framework 文档中可以知道 ObjectSpaces总共提供了 个命名空间 整体结构非常清晰 System Data ObjectSpaces System Data ObjectSpaces Query System Data ObjectSpaces Schema ObjectSpaces Query已在上面的代码中见识过 从名字中可以猜出 它们主要负责向外提供基本访问接口(如查询 增 / 删 / 改等)和解析各种查询条件(如对象过滤等) Schema命名空间则主要用来操作O/R Mapping配置文件 并为其它两个命名空间中的类提供服务 在ObjectSpaces中 O/R Mapping配置文件主要指map xml 这个文件的名字是可以随意更换的 比较类似OJB中的repository xml 另外两个分别描述数据库结构和对象结构的配置文件也非常重要 RSD xml(Relational Schema Definition) OSD xml(Object Schema Definition) 可以将它们理解为Typed DataSet中的XSD文件 没有它们 所有的数据 / 对象Mapping和Validation都将是 非法 的J! 本文中 作者不准备对ObjectSpaces来个深度探索 也不会提供什么Sample说明其优越性 这方面 NET Framework SDK早已为大家提供了丰富套餐 作者只是希望 如果从DAL的角度来分析 ObjectSpaces技术能为我们带来什么 是否意味着从此告别DataReader / DataSet 抑或为开发人员带来了新的烦恼? 好处不多说 仅举数例即可明了 ( ) ObjectSpaces全部采用对象方式访问数据 大大缓解了很多开发人员的SQL(或者说RDBMS)恐惧症 ( ) 对于比较简单的数据库结构变化 只需要修改配置文件即可 无需重新编译代码(较之OPF中将映射关系以 NET Attribute方式封装于代码中 显得更加灵活 方便) ( ) 对于比较复杂的数据库结构变化 由于只涉及对象操作 所以修改的工作也要比以前简单许多 ( ) 采用了O/R Mapping配置文件后 数据库设计与DAL开发可以分别进行 相互的影响也降到了最低点 不足则是我们更须关注的话题 ( ) 目前版本不支持中文(永远的话题J)查询 不爽! ( ) 当前版本仅支持SQL Server 以上版本的数据库系统 弱(这是个很耐人寻味的限制 有兴趣的读者不妨想想到底是什么原因)! ( 引自 NET Framework SDK Document 就这两点已排除了很多跃跃欲试的朋友 而作者参与的 NET项目虽不受 影响 但由于经常使用Oracle 就不得不暂时忍痛割爱了J) ( ) 性能问题 虽然ObjectSpaces也提供了类似DataReader的功能(ObjectReader) 但毕竟需要进行一次数据强类型填充 无论如何会有损失 如果返回数据量变大 将是一个不得不考虑的问题 ( ) 还是性能问题 map xml是个好东东 但如何优化对它的访问以及进行正确的Validation(基于RSD xml OSD xml)毕竟需要时间 甚至在某些时候(数据库结构比较复杂) 这会造成比第 点更为严重的后果 cha138/Article/program/Java/hx/201311/26147相关参考
剖析.Net下的数据访问层技术(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 其它 结束
剖析.Net下的数据访问层技术(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! O/RMap
知识大全 剖析 ADO.NET 批处理更新(深入研究数据访问)
剖析ADO.NET批处理更新(深入研究数据访问) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ADO.NET实现应用程序数据访问层 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 实现数据访问
ASP.NET2.0——实现数据访问层 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在文章重点
设计.NET应用程序数据访问层五大原则 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要大多数
ASp.net剖析三层架构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
VS2005数据存取层深入剖析基础篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要本文试图对V
VS2005数据存取层深入剖析高级篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一扩展表格适配器
完成数据访问层 注意ProductsTableAdapters类从Products表中返回的是CategoryID和SupplierID的值但并不包括Categories表的CategoryNa