DataRabbit 企业级的数据存取框架(00) -- 序

转载 2011年01月20日 19:29:00

(最新版本为DataRabbit 4.0,请到本文末下载处下载。最后更新:2009.09.15)

   DataRabbit支持基于关系(Relation)的数据库操作和基于ORM的数据库操作,内置了对Oracle和SqlServer的支持,并且可以通过插件的方式对其它数据库类型提供支持。DataRabbit中的所有访问器(都实现了
ITransactionAccesser接口)即可以在事务上下文中访问数据库,也可以在非事务中访问数据库。使用DataRabbit,几乎可以避免98%的需要在程序中手写的Sql语句,这样,你的程序会更安全,并且更容易修改和维护。

   在正式了解DataRabbit之前,也许先读一下《
DataRabbit的背后(1)-―走进DataRabbit上下文》效果更好,这篇文章为了解DataRabbit做了一些必要的铺垫。

1.DataRabbit中的访问器  
   DataRabbit主要包含以下几种访问器:
(1)针对ORM的访问器(
IOrmAccesser)(及 续篇
(2)针对数据库的Relation访问器(
IRelationAccesser
(3)针对Table的Relation访问器(
ITableAccesser
(4)针对存储过程的访问器(
ISPAccesser
(5)基于ORM的对象关系加载器(
IEntityRelationLoader
(6)数据大纲访问器(
IDataSchemaAccesser

     所有的访问器都向使用者屏蔽了地层的IDbCommand、IDbConnection等对象,使用者不必再关心打开连接、执行命令、关闭连接等繁琐底层的操作。这些访问器都从
ITransactionAccesser接口继承,它们的类图如下所示:



   DataRabbit的ORM非常轻量,它具有如下特点:
(1)使用Emit与泛型技术实现ORM访问器(IOrmAccesser),与手写SQL的效率几乎相当。
(2)使用ORM不需要任何配置文件(采用“约定”优于“配置”原则,Entity对象与数据表结构完全一致,可由工具EntityCreator自动生成)
(3)可以将数据库之间的主从表关系映射为Entity之间的关系,并可以依据主外键来加载Entity。
(4)对数据库表的结构没有任何要求。(比如,有的ORM框架要求数据表必须具有主键等)

(5)支持高效的“部分更新(partial update)”。

2.大纲操作 

   DataRabbit支持与数据大纲(DataSchema)相关的操作,比如提取某个数据库表的大纲,或者依据某个大纲创建对应的数据库表。这可以通过 IDataSchemaAccesser 接口来完成。与大纲操作相关的类图如下所示:




3.数据分页
   可以通过IPagerManager接口来进行数据分页操作(全部采用程序实现,不需要存储过程的支持)。



4.DataRabbit入口 -- TransactionScopeFactory     

     作为使用DataRabbit框架的入口点,一个TransactionScopeFactory实例就对应着一个数据库。

     也可以这么说,针对一个特定的数据库,我们的应用只需要维护一个TransactionScopeFactory实例即可。

DataConfiguration config = new DataConfiguration(DataBaseType.SqlServer, "localhost""sa""pwd""TestDB"null);
TransactionScopeFactory transactionScopeFactory 
= new TransactionScopeFactory();
transactionScopeFactory.DataConfiguration 
= config;            
transactionScopeFactory.Initialize();

 

     通过TransactionScopeFactory我们可以获取TransactionScope对象,而上述的各种访问器、大纲操作者、分页管理器等等实例都可以通过TransactionScope中的对应方法获得。

   比如,获取针对表Student的ORM访问器:

IOrmAccesser<Student> stuOrmAccesser = transationScope.NewOrmAccesser<Student>(null);
//获取所有年龄大于20岁的学生
IList<Student> stuList = stuOrmAccesser.GetMuch(new Filter(Student._Age, 20, ComparisonOperators.Greater));

     关于如何更好的使用DataRabbit框架,可以参考 使用DataRabbit的最佳实践 一文。

 

5.对N层架构的支持
   DataRabbit如何更好地融合到N层架构中了?如何支持BL层、Data层、BEM层?
(1)TransactionScope,事务范围,从某个事务返回对象获取的各种访问器实例都工作于同一个事务上下文中。TransactionScope实例通常在Business Flow子层中创建。
(2)将DataRabbit融入架构

(3)三层架构中使用DataRabbit的最佳实践 

(4)DataRabbit 对中大型高并发应用的支持

   在后续的文章中,会逐一介绍上面提到的各个DataRabbit组件,下面给出DataRabbit框架的最新版本dll下载,以及一个非常简单的ORM示例源程序,大家可以仿这段程序尝试一下DataRabbit的ORM功能。


资源下载:
1.最新版本DataRabbit 4.0下载(内含EntityCreator 和 DataRabbit 完全手册V3.0 以及最新的Demo源码)!(最后上传于 2009.09.15

其它文章:
(1)DataRabbit 3.0 ORM性能大幅度提升!
(2)DataRabbit 3.0 与 Linq to sql 性能比较
(3)Batch Insert 批插入!
(4)实体缓存EntityCache  (2008.05.28)


可以加入QQ群:37677395  一起探讨DataRabbit

相关文章推荐

企业级服务器设计与实现经验之系统框架(二)--功能/应用服务器主体框架

转自 http://blog.csdn.net/zhuweisky/article/details/415618        前面两篇文章已经介绍了功能服务器FS与应用服务器AS拆开的...

企业架构框架-TOGAF v0.3

  • 2015-09-07 16:53
  • 20.52MB
  • 下载

java后台框架源码 企业级 SpringMVC mybatis or hibernate

获取【下载地址】   QQ: 313596790   【免费支持更新】 三大数据库 mysql  oracle  sqlsever   更专业、更强悍、适合不同用户群体 【新录针对本系统的视...

Seam 是一种企业级Java 的应用程序框架

我这是在一本书上看到的文章,推荐给大家看,喜欢seam的同志,可以去看下,真的不错! Seam 为你的应用程序中所有的业务逻辑定义了一种统一的组件模型。Seam 组件可能是有状态 的,包含与几个定义...

ASP.NET MVC企业级项目框架搭建实战

MVC项目搭建笔记---- 项目框架采用 ASP.NET MVC+Entity Framwork+Spring.Net 等技术搭建,搭建过程内容比较多,结合了抽象工厂的思想降低了三层之间的耦合,...

企业级JavaEE开发框架bbossgroups作者尹标平专访

bbossgroups是国内首款集AOP、MVC、持久化、JSP标签库、分布式RPC服务、分布式事件框架于一身的企业级JavaEE开发框架,在Apache License Version 2.0 许可...

【企业级框架源码】【websocket即时通讯】【集成微信接口开发】【集成代码生成器】

 开发快报: 新增 即时通讯功能  (java WebSocket 通信技术)  下面截图 ---------------------------------------------...

java项目案例 java项目源码 java后台框架源码 企业级 SpringMVC mybatis or hibernate

 获取【下载地址】   QQ: 313596790   【免费支持更新】 A 代码生成器(开发利器);全部是源码      增删改查的处理类,service层,mybatis的xml,S...

Spring Richclient — 企业级富客户端开发框架介绍,第 1 部分

前言 基于 Swing 的富客户端开发在企业级应用开发中占据了重要的地位,而可视化开发工具尽管提高了 Swing 的开发效率,却降低了程序的可维护性。在此情况下,诸多 Swing 开发框架应运而...
  • sotsog
  • sotsog
  • 2012-04-01 14:33
  • 2153
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)