基于配置的ORMapping框架浅析之1
来源:互联网 发布:python netsnmp 编辑:程序博客网 时间:2024/05/21 09:32
框架编程目前已经是一种构建伸缩性和高可用性的一种很普遍采用的方式,框架编程的优点有很多,它把思想和技术有机的集合在一起,通过阅读框架,其实也就阅读了开发者的思想。
目前我们主要讨论持久化框架,先不讨论基于业务的框架模型
持久化模型框架一般都提供了ORMapping映射关系,一般通过配置文件来描述对象与对象间的关系,对象与数据表间的关系,数据表间的关系
那么我在框架中常常采用类表映射机制,当然这种机制的好处是不用多说的,对象关系图基本就是数据库关系图,直观。缺点也存在,当对象很多的时候,如果数据库表的数据量很大的时候,肯定是影响效率的;而且对于代码开发人员来说,开发的复杂度也较高。
具体表映射应该是一种折中方案,基本兼顾对象业务分离 和数据库效率
单表基本不采用
以下阐述一下框架整体结构:
框架以微软企业库4为底层核心,提供了AOP方面编程,依赖注入技术和自定义类生成器工具。
0)框架采用了类表映射模式开发(尚不能定制扩展成具体表映射方式,在下一个版本中可能需要增加这个类容)
1)分布式事务提供了两种方式:一种是TransactionScope 一种就是使用COMPLus
2)框架支持标签声明式变成和配置文件编程两种方式,提高灵活性
3)支持今后的读写数据分离操作,提高数据库的效率
4)准备集成复杂对象查询机制(考虑使用 Antltr ,不过现在有了Linq,目前尚在构思阶段)
Core.Entity
CoreLibrary
CoreFrameWork.COMPlusTransaction
AspectModule 目录下是 面向方面的类库
Core.Entity
持久实体结构采用了类表映射原理,并且对象间的关联采用Key值关联模式
Key关联模式 : 使用表中主键作为对象间关联标识
对象关联模式:使用对象作为对象间关联模式
- public
class Dept - {
-
public string DeptName -
{ -
get; -
set; -
} -
-
public List<int> UserList -
{ -
get; -
set; -
} - }
- public
class User - {
-
public int DeptID -
{ -
get; -
set; -
} - }
- 以上是Key值关联
- public
class Dept - {
-
public string DeptName -
{ -
get; -
set; -
} -
-
public List<User> UserList -
{ -
get; -
set; -
} - }
- public
class User - {
-
public Dept Dept -
{ -
get; -
set; -
} - }
- 以上是对象值关联
优缺点:
Key值关联避免了延迟加载等复杂的机制,仅仅是依靠ID值来作为对象的关联桥梁,数据库查询时速度快,不用拉一对其他的数据出来,如果用对象关联模式,则需要在这些方面加入延迟加载机制,否则效率太低.
因此Core.Entity 中的类不多
- ///
<summary> -
/// 领域接口标志性接口 -
/// </summary> -
public interface IDomainObject -
{ -
Guid Key -
{ -
get; -
set; -
} -
int Version -
{ -
get; -
set; -
} -
bool IsDirty -
{ -
get; -
set; -
} -
IDomainObject CloneObject(); -
-
}
可以看到主键采用的是GUID ,为什么采用GUID?
除了唯一性外,还有一点是考虑数据库性能方面,因为GUID是唯一的而且也是随机的,没有后一个GUID的值一定大于前面一个GUID的值的说法,因此在表中的分布是平均的,不会像INT型的增量数据,热区始终在表的末尾,表的末尾承受数据的压力也就最大,因此在大数据量访问和更新的时候,会影响效率。但用GUID就不会出现这种现象。
框架的很多中考虑都是考虑配合数据库效率方面而做的。
原文出处:http://blog.sina.com.cn/s/blog_53a072c10100l7uv.html
- 基于配置的ORMapping框架浅析之1
- 基于配置的ORMapping框架浅析之1(以自己开发的框架为例子)
- 基于配置的ORMapping框架浅析之2(以自己开发的框架为例子)
- 基于配置的ORMapping框架浅析之3(以自己开发的框架为例子)
- 基于配置的ORMapping框架浅析之4(面向方面的AOP切面思想引入)
- 基于配置的ORMapping框架浅析之5 (类代码生成器)
- ormapping框架和jdbc的比较
- ORMapping 框架使用最佳实践
- ORMapping 框架使用最佳实践
- 学习Spring框架笔记之基于xml的IOC配置
- Hibernate(ORMapping) 上手实例与配置过程
- 基于Spring框架的Shiro配置
- 基于Spring框架的Shiro配置
- 基于Spring框架的Shiro配置
- 基于Spring框架的Shiro配置
- 基于Spring框架的Shiro配置
- 基于Spring框架的Shiro配置
- 基于Spring框架的Shiro配置
- ichart添加click事件
- SpringRedis
- ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
- 解释器模式
- Latex用到的整理
- 基于配置的ORMapping框架浅析之1
- WebService技术总结(二):使用jaxws注解发布服务
- mysql操作目标表
- WOT 2017全球架构与运维技术峰会( World Of Tech 2017 )亮点抢先看!!!
- SPDK
- C++11新特性,利用auto和std::chrono获取系统时间的方法
- Android Studio 出现 Gradle's dependency cache may be corrupt 错误分析
- Ubuntu常用命令
- odoo连接数据库操作数据