zoukankan      html  css  js  c++  java
  • ORM介紹及ORM優點、缺點

     

      主要內容:

         1.ORM的概念

         2.為什麽要使用ORM

         3.ORM的優缺點

         4..Net中有那些ORM產品

         5.總結

    一、ORM的概念

       ORM,即Object-Relational Mapping(對象關係映射),它的作用是在關係數據庫和業務實體對象之間作一個映射,這樣,我們在具體的操作業務對象的時候,就不需要再去和複雜的SQL語句打交道,只需簡單的操作對象的屬性和方法。

    二、為什麽要使用ORM

       2.1操作數據庫代碼的重複性

       在ORM之前我们知道通过ADO.NET可以访问数据库。或者更进一步,学过三层架构的开发人员,知道可以将通过ADO.NET对数据库的操作提取到一个单独的类SqlHelper中,然后在DAL层调用SqlHelper类的方法实现对数据库的操作。即使你这样做了,在数据访问层(DAL)层,还是要写大量的代码,而且我们都知道对数据库的访问无非增、删、改、查四种操作,那么我们很容易想到我们做了大量的重复性工作。只是因为操作的表不同,我们可能需要花费大量的时间编写针对该表的增删改查语句,那么有没有一种方式能自动生成这些语句呢?这样的话,我们就可以吧主要的精力或者更多的时间投入到特殊业务的处理上。

      2.2 大量SQL語句影響程序的擴展性和靈活性

       我们知道之前我们编写的程序和数据库之间的耦合性很紧密,如果我们操作的是SQL Server数据库,我们就需要引入对应的类库(SqlConnection等),这样如果需要更换数据库,那么,数据访问层的代码就需要重新书写。

      在数据库中表现为关系数据,而在内存中表现为对象。应用程序处理对象很容易,但是很难处理关系数据。ORM做到了关系数据和对象数据之间的映射,ORM可以通过映射关系自动产生SQL语句,ORM在业务逻辑层和数据层之间充当桥梁。

      ORM核心原則:

       1、簡單性

       2、傳達性

       3、精確性

    三、ORM的優缺點

       3.1優點

         1、 隱藏了數據訪問細節,“封閉”的通用數據庫交互,ORM的核心。他使得我們的通用數據交互變得簡單易行,並且完全不用考慮該死的SQL語句。快速開發,由此而來。

         2、ORM使用我們構造固化數據結構變得簡單易行。

         3、ORM可以防止SQL的注入

         4、面向對象    不用編碼,就可以向操作對象一樣操作數據庫

         5、提高開發效率   ORM可以自動對實體對象與數據庫中表進行字段與屬性的映射,不需要單獨的數據訪問層就可以數據進行增刪改查。

        6、方便轉移數據庫   當數據庫發生改變時,不需要對模型進行改動,只需要修改映射關係就可以了。

      在ORM年表的史前時代,我們需要將我們的對象模型轉化為一條條的SQL語句,通過直連或是DB helper在關係數據庫構造我們的數據庫體系。而現在,基本上所有的ORM框架都提供了通過對象模型關係數據庫結構的功能

      3.2 缺點

        1、無可避免的,自動化意味著映射和關聯管理,代價是犧牲性能(早期,這是所有不喜歡ORM人的共同點)。現在的各種ORM框架都在嘗試使用各種方法來減輕這塊,效果還是很顯著的。

        2、面向對象的查詢語言作為一種數據庫與對象之間的過渡,雖然隱藏了數據層面的業務抽象,但并不能完全的屏蔽掉數據庫層的設計,並且無疑將半圓學習成本

       3、對於複雜查詢,ORM仍然力不從心。雖然可以實現,但是不值的。視圖和存儲可以解決大部問題

    四、Net中有那些ORM產品

       NHibernate、NBear、Castle ActiveRecord、iBATIS.NET、DAAB、EF(Entity Framework)等等

      1、NHibernate

       提起NHibernate,相信大家都不陌生,NHibernate來源於非常優秀的基於Java的Hibernate關係型持久化工具,它從數據庫底層來持久化.Net對象到關係型數據庫,NHibernate為我們完成這一切,而不用自己寫SQL語句去操作對象,所寫的代碼僅僅和對象關聯,NHibernate自動產生SQL語句,并確保對象提交到正確的表和字段中去。大量減少開發時人工使用SQL和ADO.NET處理數據的時間。NHibernate可以幫助消除或者包裝那些針對特定數據庫的SQL代碼,並且把結果集從表格的表示形式轉換到一系列的對象去。NHibernate採用XML文件配置的方式,每一個實體類都會對應一個映射文件。學習資料可參考

      李永京的博客

         http://www.cnblogs.com/lyj/archive/2008/10/30/1323099.html

      DDL的博客

        http://www.cnblogs.com/renrenqq/category/39891.html

      大名鼎鼎的張老三

        http://blog.csdn.net/billy_zh/category/22383.aspx

      2、EF(Entity Framework)

          ADO.NET Entity Framework 微软 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,早期被
    称为ObjectSpace,最新版本是EF4.1【CodeOnly功能得到了更好的支持
     实体框架Entity Framework  ADO.NET 中的一组支持开发面向数据的软件应用程序的技术。是微软的一个ORM框架。
     
     學習參考資料
     


     

  • 相关阅读:
    rocketmq 修改broker和namesrv默认设置的堆内存大小
    linux 向文件中添加内容 sed
    页面 请求错误总结
    将pgsql中的所有表的序列当前值设置为所需的值
    pg 强制断开连接 删库
    测试的基本概念
    Linking(3)
    Linking(1)
    Linking(2)
    Nginx Learning (5)
  • 原文地址:https://www.cnblogs.com/xiaowuzi/p/3485302.html
Copyright © 2011-2022 走看看