浅谈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作为原生的连接数据方式,会侧重于关注连接,导致需要写大量的连接代码,

 

以上仅是个人拙见。

 

posted @ 2022-06-09 08:02  唐什么来着  阅读(82)  评论(0编辑  收藏  举报