zoukankan      html  css  js  c++  java
  • Nhibernate三层结构

    文简单比较了动软三层结构和“Nhibernate三层结构”。  

      (1)动软三层架构

      刚开发ASP.Net应用时,使用动软自动生成的三层架构,用起来方便。就是改动起来麻烦。比如要加一个查询数据的方法,先在DAL层添加接口方法,再到SQLServerDAL层添加实现代码,再到BLL层添加一个包装方法。向某个表里添加一个字段,就得重新生成一遍,要不然就自己一层一层改。

     项目常用算法之Nhibernate三层结构

      IDAL层,可以由OracleDAL或DB2DAL来实现,目的是屏蔽数据操作的细节。BLL层是有必要的,封装业务处理逻辑。上图展示了数据访问层和业务逻辑层,表示层就是aspx页面了,调用BLL取得数据,然后展示给用户,很多时候会用GridView显示数据。

      在开发时,发现BLL层的两个功能:处理业务逻辑和显示数据,可以分离开来。动软给数据库中的每个表都生成一个BLL层的类,而有的表并不对应具体的业务逻辑(比如公司信息表,个人信息表),有的表需要混合其他表来完成业务逻辑(比如处理网站登陆的表Admin,需要结合用户表,角色表等)。这是可以改进的。对那些只需要提供数据、并不要处理业务逻辑的类(如用户表等),统一交给一个的类来管理,给一个表名(最后用视图封装)和查询条件,那个类就返回相应的数据,这是容易实现的。而把业务逻辑的类抽象出来。请看下面的”Nhibernate三层结构”。

      (2)Nhibernate三层结构

      Nhibernate作为一种对象关系映射框架,以面向对象的方式来操作数据库,简单方便。以下是项目中使用的“Nhibernate三层结构”:

    项目常用算法之Nhibernate三层结构

      有NHibernate支持,每个Model层的实体类可以封装数据操作方法(如Save,Update等),BLL层可以方便调用。事实上,BLL大多涉及到单个对象的操作(新增或更新、删除),这个NHibernate的强项,而且能以面向对象的方式很好地配合业务逻辑的实现。

      DataViewer是从原来动软三层架构里的BLL层分离出来的,负责给前台页面提供数据。应该归到表示层。这样,层次就清晰多了。BLL只负责处理业务逻辑,不提供前台展示的数据。或者说BLL层负责修改后台的数据库,而DataViewer不会修改数据库,只负责读数据库,向前台输出组合查询、分页后的数据。

      DataViewer不使用NHibernate的HQL,原因是HQL可能会导致效率的低下,使用原来的SQL查询方式,不用学习新的东西,还能做一些查询优化。DataViewer最好是操作视图,不操作具体的表,方便修改。

  • 相关阅读:
    在IIS中设置默认网页
    vim 查找匹配字符串次数
    resource about NLP
    Mongodb基本知识和常用语法
    fudanNLP keyword Extraction
    nltk support chinese by sinica
    Gmail小技巧:只显示未读邮件
    java get line number and file name
    java classpath import package 机制
    linux 调用 fudanNLP
  • 原文地址:https://www.cnblogs.com/luluping/p/1587612.html
Copyright © 2011-2022 走看看