Galbanum 之Orm(四)

首先呢,来看一下Orm项目通过VS导出的类图,
Galbanum 之Orm(四)_第1张图片Galbanum 之Orm(四)_第2张图片
图片比较大,可以下载本地看,下面主要通过文字说说设计思想,
1。基于Attribute来映射表结构,主是有TableAttribute和ColumnAttribute,在TableAttribute拥有一个ColumAttribute的List集合,第一次TableFactory通过反射实体的类特性获取TableAttribute并同时通过反射实体的属性特性来添加到访TableAttribute的List<ColumnAttribute>中,之后表结构将用单件模式下的Dictionary静态存于内存中,即,内存中存有表结构,在以后的获取中将提高性能减少反射。两个类的关系用UML表示为组合关系。如图:



Galbanum 之Orm(四)_第3张图片

2。实体保存是主要是通过上面所说的特性来获取表结构,并利用特性来创建一个IStatement(该接口主要封装.net中的DbCommand),在创建中利用策略模式通过接口ICreateStmt来设置CommandText和Parameters,然而为了减少反射获取实体的属性名称和值,于是ICreateStmt接口中的CreateStmt()中,大凡封装了一个SetSqlParameters()(oracle数据库为SetOracleParameters)方法,这个由实体类自己提供的,于是IEntity接口就产生了。

3。Orm并没有封装实体的one to many 或者 many to one 的关系,主要是因为小巫感觉在涉及多表查询的时候还是直接使用SQL语句在性能上远超过延迟加载的实体集合,所以没有进行这一步的封装。

更加详细的说明可以看源程序注释和代码。


 

你可能感兴趣的:(oracle,数据库,orm,Parameters,UML,Dictionary)