zoukankan      html  css  js  c++  java
  • Nhibernate与代码生成器介绍(转载)

    原来一直使用代码生成,包括CodeSmith和CodeMatic.最近打算系统学习一下Nhibernate,经过简单的一点探索,发现ORM和代码生成真是个有千秋。育学网3i�Rp\s8v

    Z5pa)S:e5c  本文侧重比较一下ORM和代码生成二者的优缺点,让二者华山一比高下,目的为去伪存真,使二者能够相辅相成。从而更好的提高开发效率。育学网EKs r?Sg?

    x}/M'\3Y*B j3M  本文从下面三个层面对ORM(以NHibernate为首发的O阵营) 和代码生成(以CodeMatic为首发的C阵营)进行比较:

    +bM2d.E�N,hG8N 育学网AYUXX

      1)针对数据库二者的架构层次上的异同

    .d6])~'r#? K?+m 育学网9B:eR'U$H2]

      2) 针对应用程序二者在使用和配置上的异同

    +_ @3zKl 育学网(`D6~.a(Ae0` n4H

      3) 针对业务逻辑二者在对变化和复杂度上支持度的异同。育学网[S,A:w|+Y%H}7|

    (Q4iCr V8omf?;v  下面就具体针对这三个层面做一下具体分析,这些分析都来源于自己开发中的一些经验和心得,有些是正确的,有些也存在这样那样的问题。写出来,希望的也只是能抛砖引玉,得到更多朋友,兄弟的帮助和支持。育学网5L t]2}}fI1Z

    育学网.rqC u1w8hlDfd

      1) 针对数据库二者在架构层次上异同育学网%H)\ FA%f#y7N

    5r!O|7a�]S  首先看一下下面这张图:育学网o,BcZ6[-e z

    )K-U,qD Th  ORM针对数据库是由上而下的关系,也 就是说ORM并不依赖于数据库。他可以完全从关系数据库中将程序员解放出来,需要程序员小心呵护的是传递给nhibernate的persistent object.这看起来更加OO,而代码生成恰恰相反,代码生成依赖于关系数据库。它总结数据库操作的一些共性,将本来需要程序员手写的代码自动生成出 来。从OO的角度来说,代码生成的过程并不体现OO思想,但根据模版或者软件作者的一些逻辑。生成出来的代码却可能具有很好的OO思想。针对数据库来说, ORM是自顶向下的,代码生成则是自下而上。二者方向恰好相反。育学网 R9r2r ^;NL`E

    育学网"q!Efb/a

      2)针对应用程序二者在使用和配置上的 异同nhinernate的使用需要在原有系统上添加对nhibernate.dll和其他一些相关的dll的引用,而代码生成则不然,代码生成是在另外 的一个软件中,通过指定数据库来生成用于操作数据库的文件,将这些文件添加到项目中的时候才可以正常使用。nhibernate最让人头疼的就是配置和映 射文件的编写。而代码生成,如果需要完成复杂的逻辑和自定义的业务,需要编写CodeSmith等软件的模版,这些模版的编写也不是一件简单的事情。从使 用和配置上看,二者的异同在于使用方法,引用方法,配置文件nhibernate系统内需要添加相关引用,需要编写大量的配置和映射文件。 codematic系统外不需要添加引用,业务简单时不需要配置,复杂时需要编写自定义模版育学网|QyRzG-f4F_O9m

    z�h"W+? Rf:K  3)针对业务逻辑二者在对变化和复杂度上支持度的异同

    a&O2KK"zj"|w ;z.S.}l8qh&U
  • 相关阅读:
    ios开发-2015-07-28
    ios开发-2015-07-27
    ios开发-2015-07-26
    ios开发-2015-07-25
    ios开发-2015-07-24
    ios开发-2015-07-23
    Selenium学习笔记之010:层级定位 分类: Selenium 2015-07-21 23:17 11人阅读 评论(0) 收藏
    Selenium学习笔记之007:定位一组元素
    Selenium学习笔记之007:定位一组元素 分类: Selenium 2015-07-21 23:03 9人阅读 评论(0) 收藏
    Selenium学习笔记之006:webdriver的八种定位方式 分类: Selenium 2015-07-21 22:33 11人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/hakuci/p/1119053.html
Copyright © 2011-2022 走看看