zoukankan      html  css  js  c++  java
  • ORM框架基本认识

    (以下内容主要用于自己的生活的记录,不喜勿喷)

    从工作到现在也一年多了,可是上周五下班时,老大喊着我,问了我一句:“我周末打算让你帮我找点资料,你知道ORM吗?”

    在当时,我直接楞了一下,因为在当时的时候我完全没有对ORM这几个单词的概念理解(虽说以前肯定用过,并且还看过相应的实现代码)!

    周末经过查询一些资料,感觉现在他们讨论的主要的ORM框架有以下这些

    1.NHibernate

    提起NHibernate,相信大家都不陌生,NHibernate来源于非常优秀的基于Java的Hibernate关系型持久化工具,它从数据库底层来持久化.Net对象到关系型数据库,NHibernate为我们完成这一切,而不用自己写SQL语句去操作数据库对象,所写的代码仅仅和对象关联,NHibernat自动产生SQL语句,并确保对象提交到正确的表和字段中去.大量减少开发时人工使用SQL和ADO.NET处理数据的时间. NHibernate可以帮助消除或者包装那些针对特定数据库的SQL代码,并且把结果集从表格的表示形式转换到一系列的对象去。NHibernate采用XML文件配置的方式,每一个实体类都会对应一个映射文件

    优点:
    1.完全的ORM框架。
    NHibernate对数据库结构提供了较为完整的封装,它将数据库模式映射为较完全的对象模型,支持封装,继续机制,功能较强大,比一般的ORM灵活性高。
    开发人员可以完全按照对象模型操纵数据库。
    2.代码自动生成,减少代码和sql的开发量,使开发人员摆脱开sql,ado.net和事务,缓存等底层。
    NHibernate的O/R Mapping实现了PO 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往往只需定义好了PO 到数据库表的映射关系,即可通过NHibernate提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练把握, NHibernate 会根据制定的存储逻辑,自动生成对应的SQL 并调用ADO.NET接口加以执行。NHibernate有工具可以直接根据数据库模式生成po类,或者通过在代码中添加Attribute属性自动生成配置文件。
    这些都减少了开发工作量。
    3.较好的文档支持。
    NHibernate的代码可读性和文档都比较好。
     缺点:
    1.较复杂,学习曲线大。
    2.对数据库模式有较高的要求。NHibernate需要数据库有良好的设计和比较完善的约束。
    3.不适合统计查询系统。对于多表连查,复杂的sql实现比较复杂,而且有可能需要借助其他方案。
    4.需要一些xml配置。

    官网地址  http://www.nhibernate.org/

    2.Castle ActiveRecord

    ActiveRecord是Castle中的一个子项目,现在的版本是RC1。它同样是一个非常优秀的持久层框架,在底层封装了NHibernate,改用Attribute来代替配置文件,这样就不用再像NHibernate那样去编写复杂的配置文件

    Castle ActiveRecord框架是一个基于.NET的ORM框架,它实现了ActiveRecord设计模式。它本身就是基于NHibernate,只是封 装了NHibernate的大部分烦杂细节,对于需要持久化的类,只需继承自ActiveRecordBase类,并对类中的property赋予正确的 Attribute,而无需编写烦杂的mapping file。对于大型系统复杂的数据库逻辑,Castle project建议仍然使用NHibernate作为ORM,而对于数据库数据大批量的迁移、备份等操作,Castle project建议不采用任何ORM机制,而直接使用ADO.NET。

    优点:

    1.Active Record的成功依赖于两个因素:简单和框架。Active Record概念上理解起来十分的简单, 不过若手工实现,仍然需要很多代码。

    编写并维护每一个类都需要大量的代码,不过这仅仅是最低的需求,因为你可能还要考虑为每个类或者数据表添加一个或多个数据迁移对象(DTO)。

    缺点: 

    2.理论上,开发中还需要一个额外的层存在于对象模型和数据模式之间,通常叫做数据映射层(Data Mapper)。在Active Record中,我们可以将该层直接集成在对象中,不过随着这一层越来越复杂,维护成本也在逐渐提高。

    Active Record的另外一个问题是对象和数据表设计之间的绑定。若你不得不修改数据库,那么要同时修改Active Record的对象模型以及所有的相关代码

    3.iBATIS.NET

    iBATIS.NET分为DataMapper和DataAccess两部分,应该说DataMapper是这个框架的核心,DataMapper使用XML文件来实现从实体到SQL statements的映射,学习起来非常简单,是用DataMapper后,我们可以自由的使用SQL语句或者存储过程;DataAccess允许我们通过一个简单的接口来操作数据,而不必了解底层实现的细节

    官网地址: http://ibatis.apache.org/

    4.MyBatis

    MyBatis 的前身就是 iBatis 。是一个数据持久层(ORM)框架。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)

    文件来源的连接:

    http://www.cnblogs.com/zhaoyx/articles/1896638.html

    http://www.cnblogs.com/HeroBeast/archive/2010/10/10/1847353.html

    开源中国对C#ORM框架的总结

    http://www.oschina.net/project/tag/126/orm?sort=view&lang=194&os=0

  • 相关阅读:
    触发器基本使用
    查询结果合并用逗号分隔
    查询报表增加小计功能
    sql语句格式化数字(前面补0)
    如何在选择画面中创建下拉列表(drop down list)-as list box
    如何更改函数的函数组(function group)
    ABAP语言中如何定义嵌套内表(nested internal table)
    [REUSE_ALV_GRID_DISPLAY]如何指定单元格颜色
    如何创建嵌套动态内表(Nested dynamic internal table)
    如何根据方法名(method)查找所在类(class)-SE84
  • 原文地址:https://www.cnblogs.com/notyourdog/p/4718598.html
Copyright © 2011-2022 走看看