当前位置:  开发笔记 > 数据库 > 正文

NHibernate的优点和缺点

如何解决《NHibernate的优点和缺点》经验,为你挑选了2个好方法。

使用NHibernate有什么优点/缺点?应该(并且不应该)使用NHibernate构建什么样的应用程序?



1> Surya..:

由于其他人已经列出了优势,我将列出其中的缺点


缺点

    由于元数据准备而增加启动时间(不适用于类似桌面的应用程序)

    没有orm背景的巨大的学习曲线.

    比较难以微调生成的sql.

    如果在非典型环境中使用,很难获得正确的会话管理(读取非webapps)

    不适用于没有干净域对象模型的应用程序(世界上没有所有应用程序都不需要干净的域对象模型).

    如果您的设计(遗留)数据库架构设计糟糕,必须跳过箍.


我强调了巨大的学习曲线是在项目中不使用NHibernate的最大原因.尽管有这些缺点,LINQ to Sql等工具比NHibernate更容易上手.也就是说,由于其惊人的灵活性,我宁愿在项目上使用NHibernate而不是任何其他ORM.

2> Ray..:

好处:

    灵活且功能强大的映射功能.

    缓存.

    非常精致的UnitOfWork实现.

    未来的查询(文章).

    模型类是POCO - 这实际上意味着您可以轻松实现贫血域反模式.

    拦截器 - 您可以进行一种面向方面的编程...就像非常容易实现您的域的试听,日志记录,授权,验证等.

    Lucene.NET和NHibernate相互完美集成 - 为您提供全速索引的快速有效实现.

    它在企业环境中非常成熟和流行.

    大社区.

缺点:

    已经提到过学习曲线.您可以非常快速地开始使用NHibernate,但掌握它需要几个月的时间.我非常推荐阅读Manning NHibernate的书.

    编写XML映射可能非常繁琐,特别是对于具有数百个表和视图以及存储过程的大型数据库.是的,有一些工具可以帮助您生成这些映射,但是您仍然需要在那里进行大量的手工操作.流畅的NHibernate似乎通过去除XML映射简化了这个过程,Castle ActiveRecord也是如此(当你在模型类的属性中定义映射时,AR虽然不可能用于贫血领域).

    某些风景可能性能低下.例如大型批量操作.对于那些你可能不得不使用IStatelessSession但其尴尬的经历,最不用说......

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有