• 浅谈ADO.NET和EntityFramework以及Nhibernate


    Nhibernate
    优点:
    1.面向对象:NHiberante的使用时只需要操纵对象,使开发更对象化,抛弃了以数据库中心的思想,完全的面向对象思想。
    2.透明持久化:带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的POCO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。(例如,用作跟表示层打交道的数据传输对象。)

    3.较好的移植性:支持多种数据库,便于数据库的迁移。
    4.缓存机制:提供一、二级缓存和查询缓存。
    5.开发效率:众所周知,使用NHibernate可以简化程序开发,从而达到快速开发的目的。作为软件公司,项目管理的关键就是控制开发成本。正因为使用NHibernate后所写的代码量减少了,相对于原先使用“SqlHelper、DAL、BLL”开发程序的项目周期缩短了,成本就降低了。
    缺点:
    1.内存消耗:使用NHibernate后,内存开销比较大
    2.批量数据库的处理:由于NHibernate是基于面向对象的ORM框架,处理数据库的方式是针对单个对象的。对数据库的增、删、改都是正对一条记录而言。对于批量修改、删除数据,不适合用NHiberante。
    3.较多使用数据库特性时,也不适合使用NHiberante。如数据库中大量的存储过程、触发器、特点的SQL语句。
    4.表关系比较混乱时也不适合使用NHiberante。NHibernate只适合于表与表的关系比较明确的环境中。如本应该建立外键的,没有建立外键。这时使用NHiberante不仅没有减少工作量,反而增加了工作量。

    EF

    优点:
    1、跨数据库支持能力强大,只需修改配置就可以轻松实现数据库切换
    2、提升了开发效率,不需要在编写Sql脚本,但是有些特殊Sql脚本EF无法实现,需要我们自己编写(通过EF中的ExecuteSqlCommand实现插入、修改、删除、SqlQuery执行查询)
    3、EF提供的模型设计器十分强大,可以让我们清晰的指定或者查看表与表之间的关系(一对多,多对多..)
    4、EF提供的导航属性十分好用
    5、EF的延迟查询加载机制,数据在用到的时候才会去数据库查询

    缺点:
    1、性能差(生成Sql脚本阶段),在复杂查询的时候生成的脚本不是很高
    2、第一次执行时会有预热,预热时性能较差,不过将映射关系加载到内存之后就会好很多

    ADO.NET

      个人感觉,ADO.NET作为原生的连接数据方式,会侧重于关注连接,导致需要写大量的连接代码,

    以上仅是个人拙见。

  • 相关阅读:
    IDEA、Eclipse快捷键对比
    linux常见命令
    拷贝本地文件到远程服务器的批处理脚本
    关系型数据库的超键、候选键、主键
    JAVA运算符总结
    JAVA原码反码补码
    JPA查询语句(转载)
    Spring Data JPA初使用(转载)
    android学习————项目导入常见错误整理(转载)
    Spring 系列: Spring 框架简介
  • 原文地址:https://www.cnblogs.com/JohnTang/p/16357961.html
Copyright © 2020-2023  润新知