• 论文导航
  • 论文专题
  • 论文源代码
  • 设计资源
  • 原创论文
  • 交流互动
  • 作业答案
  • 工具
  • 会员
  • 设计专题

首页|原创论文|原创论文|论文全套|点数论文|实用文档|课程设计|定作论文|毕业论文|考试资料|知识在线|密码保护|大学生|论文帮助|保健养生|健康家园|期刊导航|创业资料|毕业论文|站长学院|学习娱乐|演示文稿|免费论文|源代码|博士论文|研究论文|参考论文|下载分类|写作指导|应用文|英语论文|文化|哲学|艺术类|计算机|工学|教育类|文学|社会学|政治|医药学|理学|法学|公共管理|财务管理|工商管理|会计审计|管理学|证券金融|财政税收|经济学|论文范文|网络学院|早教|就业指导|求职英语|简历|公务员|动漫频道|作文大全|土木工程|法学|计算机|护理学|会计学|交通运输|工商管理|汉语言|原创|计算机论文全套|计算机点数论文|点数参考论文|ASP设计|ASP.NET设计|VB设计|JSP设计|C#设计|PHP设计|JAVA设计|VF设计|DELPHI设计|PB设计|VC++设计|计算机网络|机械论文|单片机论文|电子论文|asp源码| asp精品| php精品源码| vb精品| vfp精品源码| Java精品|Asp.net精品源码|Jsp精品|定作论文

BS| CS | vb| VC | 设计| 系统 | 毕业| JSp | web| net | PLC| FLASH | sql| PHP | CAD| 源码 | pb| delphi | 方案| ppt | J2ee| HTML | android| access | vfp| 模具 | j2me| service | photo| CPA | TCP| J2ME | ASP| java | ATL| 案例 | 单片机| Ajax | powerbuilder| frontpage | div| 报告 | 毕业设计| 电工 | 课程| 嵌入式 | 通讯| 软件测试 | Unix编程| 3D图形编程 | 人工智能| 图形 | Internet/IE编程| 界面编程 | SQL Server| 代理服务器 | 系统编程| 单片机开发 | 人工智能| 文件操作 | RichEdit| 屏幕保护 | 网格计算| uCOS | JspServlet| 驱动编程 | Shell编程| MTK | Java编程| 酒店行业 | 其他小程序| 外挂编程 | VC书籍| .net编程 | 教育系统应用| 中间件编程

下载目录|论文及源代码|asp源码|asp精品源码|php精品源码|vb精品源码|vfp精品源码|Java精品源码|vc++精品源码|ACCESS精品源码|Authorware精品源码|Asp.net精品源码|Jsp精品源码|DIV+CSS模板|FLASH精品源码|PB精品源码|Android源码 |asp代码|ajax代码|php代码|html代码|java代码|jsp代码|pb代码|Ruby代码|sql代码|vfp代码|数据结构与算法|汇编语言|Perl代码|delphi代码|flash代码|js代码|net代码|vb代码|vc代码|DVD光盘源代码|ipad源代码|后台模板|CSS菜单|CSS图表|图片图标|精美Word模板|精美EXCEL模板|精美PPT模板|系统操作视频和下载|ASP在线学习|PHP在线学习|JSP在线学习|JAVA在线学习|NET在线学习|VC在线学习|VB在线学习|VFP在线学习|SQL在线学习|PB在线学习|PHOTOSHOP在线学习|Delphi在线学习|计算机点数论文|点数参考论文|ASP设计|ASP.NET设计 |VB设计|JSP设计|C#设计|PHP设计|JAVA设计|VF设计|DELPHI设计|PB设计|VC++设计|计算机网络|机械论文|单片机论文|电子论文

C++|VB|ASP|VF|DELPHI|JSP|电气|计算机|经济|打包下载|查询工具|设计定作|设计专题|ASP,网站,C/S,设计等定作

网站首页|原创系统|工商管理|护理学|会计学|行政管理|计算机|土木工程|汉语言|机械设计|交通运输|法学|卫生法学

内涵段子| 冷笑话| 幽默笑话| 短信笑话| 其它笑话| 大杂烩| 青芜校园| 社会广角| 动漫风云| 征婚交友| 股票基金| 私房话|社会趣闻| 手机地带| 其它笑话 动漫风云| 冷笑话

作业答案| 小学作业| 高中作业| 中专作业| 初中作业| 大专作业| 大学作业| 研究生作业|原创论文|论文下载|下载源代码|精器资源|会员中心| 查询资料| 暑假作业| 家庭作业

IP地址查询 搜索IP地址所在的地理位置 | 英文词典、在线翻译 在线新华字典/生字查找 | 网速测试 测试网络连接速率 | 文件扩展名文件后缀名查询 | 下载地址转换 迅雷/快车下载地址转换 | 在线生成Favicon图标 | 繁体与简体自由转换工具 | 论坛常用发帖代码 | 在线制作个性邮箱图标 || 汉字拼音及五笔编码查询 | 汉字拼音查询 | 查询域名或同IP下所有站点 | Google PageRank查询 | 查看域名WHOIS信息 | ALEXA世界排名查询服务 | HTML转换JS代码 | 将代码以BASE64方式加密/解密 | JS在线加密/解密 | 字符转UTF-8编码 | 链接地址16进制加密 | 字符串32位MD5加密 | 将代码以Escape加密/解密 | 字符串转换为ASCII码器 | 代码美化、压缩、混淆加密 | ASCII字形生成器 | 页面转换效果生成器 | 正则表达式检测器

会员中心|会员登录|我要充值加点|我要充值论文

全套论文|设计下载|源码|原创论文|下载目录|论文总站|论文搜索|最新论文| 万能工具|定作论文|定作设计|毕业设计 |Word格式|管理系统 课程设计|论文专题 |保存到桌面 |演示|系统 | 设计 | 毕业 | 通信 | 模具 | 单片机 | 方案 | 答辩PPT|J2EE

您现在的位置:网学>>免费论文>>论文导航>>Windows编程>>Java开源代码
  • NHibernate代码生成器

    栏目导航 Windows编程 2013-10-22 2013-10-22  版权 版权投诉 上传资料 上传资料 复制论文网址 复制论文网址 上传用户:yesonside

    【Java开源代码栏目提醒】:以下是网学会员为您推荐的Java开源代码-NHibernate代码生成器 - 讲义教程,希望本篇文章对您学习有所帮助。

        

    2009.2009.11NHibernate是一个面向.NET环境的对象/关系数据库映射工具。

        NHibernate很好地实现了关系型数据库到面向对象实体的映射并且提供数据查询和获取数据的方法从而大幅度减少开发时人工使用SQL和ADO.NET处理数据的时间提高了效率和安全性。

        但是在使用NHibernate之前需要手写大量配置文件和POJO类并且一旦有错误就会导致整个程序的错误也就提高了整个项目的复杂性。

        那么如何才能有效地去完成这项工作呢在此将向大家介绍NHibernate的代码生成器同时也可以参考实现其他功能的代码生成器。

        1实现原理综合大部分的代码生成器不难看出绝大多数都采用了XML、XSLT技术。

        其主要原因在于首先XML的国际标准化其次XML可以表示层次结构有利于。

        而XSLT是一种将XML文档转换为其他文本文档的语言它是建立在XML和XPath之上的国际标准功能强大。

        两者结合可以很容易实现代码生成功能。

        考虑到NHibernate是ORM工具而XML可以很容易地实现数据表的层次结构同时C语言中包含了实现对XML和XSLT的操作的类库。

        所以在此也将采用XML、XSLT技术实现NHibernate代码生成器。

        基本的原理如图1所示。

        2设计原理要实现将关系数据库模型通过代码生成器映射为所需要的代码首先要将关系数据库模型转换为代码生成器可以读取的文件然后代码生成器从这些输入文件中提取出模型中的信息并生成相应的代码。

        那么在这里使用的是XML文档就必须将关系型数据库模型转换为XML文档。

        为了实现较好的通用性本代码生成器可以实现Access、MsSQL、Oracle这三个数据库转换功能。

        接着将使用XSLT作为模板完成从XML到代码的转换过程从而实现代码生成器的基本功能。

        2.1数据库模型到XML文档的转换这里关键是获取数据库的基本信息包括表、字段、索引、键等这次都可以通过数据库中的系统表获得下面给出3个数据中数据库的基本信息获取方法。

        对于MsSQLServer数据库中有SysObjects和SysColumns这两个系统表可以查询系统表来获得所有的表名称和字段名称以及格式还有一个sp_helpindex的系统预定义存储过程来获得指定表的字段索引信息。

        对于Oracle数据库有一个名为Col的系统预定义视图可以查询这个视图获得所有的表名和字段定义信息。

        还有一个user_ind_columns的系统预定义视图可以获得关键字段信息。

        对于Access2000数据库没有这些系统表因此使用.NET框架中的OleDB数据连接对象的GetOleDbSchemaTable函数来获得数据库表和字段定义信息。

        现在通过上面的方法可以获取数据库的信息后面要做的就是将它生成指定的XML文档。

        GetTableXMLstringtableName方法实现了读取数据库信息并生成XML字符串的功能。

        ////实现对单个表的转换为XML文档的函数////表名//XML字符串publicstringgetSQLTableXMLstringtableNamestringfieldTypestringstrSQLnull//用户查询单个表中的字段属性strSQLselectsysobjects.namesyscolumns.namesystypes.namesyscolumns.lengthsyscolumns.isnullablesysobjects.typefromsyscolumnssysobjectssystypeswheresyscolumns.idsysobjects.idandsyscolumns.xusertypesystypes.xusertypeandsysobjects.typeUorsysobjects.typeVandsystypes.name_default_andsystypes.namesysnameandsysobjects.nametableNameorderbysysobjects.namesyscolumns.nameDataViewmydvSQLHelper.ExecuteDataViewstrSQLStringBuildersbnewStringBuilder//构建XML字符串NHibernate代码生成器李伟摘要采用代码生成技术能大幅度提高软件开发的质量和生产率降低软件开发的风险。

        文中讲解了基于C的NHibernate代码生成器的设计与实现过程并分析了常见的代码生成技术同时结合实例说明核心源代码。

        关键词代码生成器CNHibernateXML172009.11ifmydv.Count0sbAppendsbAppendsbAppendusingSystemsbAppendsbAppendtestsbAppendsbAppendmydv00ToStringsbAppendforinti0irole_idintint4role_namevarchar50role_remarkvarchar100这样就完成了数据库模型向XML文档的转换。

        这里需要注意的是转换中要将数据库数据类型转换为C语言或其他语言的数据类型。

        代码如下所示privatestringgetTypestringdbtypeswitchdbtypecasevarchar:…returnstringcasedate:…returnDateTime…return2.2制定生成代码的模板XSLT是一种将XML文档转换为其他文本文档的语言它是建立在XML和XPath之上的国际标准功能强大。

        这里使用XSLT作为模板可以方便地将XML文档转换为具体的代码。

        下面是一个简单的模板用于生成POJO类usingSystemnamespacepublicclass_182009.2009.11publicgetreturn_set_Vaue当然模板可以自己定义然后在程序中动态地加载从而实现多语言VB.NET、Java等并且可以设计自己的专用模板来生成自己想要的代码。

        2.3将XML转换为代码现在已经完成了XML和XSLT这两个文档下面就是.NET平台下的System.Xml.Xsl.XslCompiledTransform类来实现生成代码xmg.getTaeXMLt_sys_rol//获取表的基本信息存储到XML文件中Systm.Xm.Xs.XsCompTransformtransformnewSystm.Xm.Xs.XsCompTransformtransform.Loa_HN_POJO.xst//加载POJO的XSLT文件transform.Transform“roe.xm””roe.cs”//使用Transform方法实现代码的生成生成文件为roe.cs//复制生成文件到指定的目录下System.IO.Fe.CopyprojectPathroe.cstxtProjectFoder.Textmappngtruetransform.Load_HN_HBM.xst//加载HBM的XSLT文件transform.Transform“roe.xm””roe.hbm.xm”System.IO.Fe.CopyprojectPathroe.hbm.xmtxtProjectFoder.Textmappngtrue通过以上的代码完成了将role.xml转换为role.cs的过程。

        生成后的代码效果如下usngSystemnamespacetestpubccasst_sys_roent_roe_d…pubcnt_roe_dgetreturn_roe_dset_roe_dVaue…同时也生成了需要的hbm.xml文件。

        3程序构架程序的整个结构如图1所示。

        其中的代码核心部分在KitCore类库中DataBaseInfo.cs、FieldInfo.cs、TableInfo.cs分别用于表述数据库信息、字段信息、表信息。

        2SQLHelper.cs主要实现操作SQL数据库的帮助类。

        3GenerateCore.cs主要实现代码生成的类。

        NHibernateKit应用程序是主要完成界面的功能MainForm.cs是主界面AboutBox.cs是软件信息KitHelper.cs是一些帮助类。

        界面如图2用于数据库的连接、图3选择生成的数据表、图4设置相关的参数、图5生成代码、图6设置用于生成的模板。

        3.1获取本地的SQL服务器名prvatevodbtnRrs_CkojtsnrEvntArstryts.CursorCursors.WatCursor//修改鼠标的状态为沙漏状//获取本地计算机SQL服务器名图1程序结构图192009.11图3图2图4图5202009.2009.11图6cmbServerNames.DataSourceSystem.Data.Sql.SqlDataSourceEnumerator.InstanceGetDataSourcescmbServerNamesDisplayMemberServerName…3.2获取指定服务器下的数据库列表privatevoidcmbDatabaseNames_DropDownobjectsenderEventArgsetrythisCursorCursorsWaitCursor/通过SQLHelpercs中的getDataSet方法返回数据//源其中selectnamedbidfromsysdatabases用于返回服务//器中的所有数据库。

        cmbDatabaseNamesDataSourceSQLHelpergetDataSetselectnamedbidfromsysdatabasescmbDatabaseNamesDisplayMembernamecmbDatabaseNamesValueMemberdbid…3.3获取指定数据库下的数据表列表privatevoidbtnNext_ClickobjectsenderEventArgse…thisCursorCursorsWaitCursorSetConnectionStringDataTabledtdataClassExecuteReaderSELECTTableNamesonameIDsoidFROMsysobjectssoWHEREOBJECTPROPERTYso.idIsMsShipped0ANDsoxtypeUchklistTablesItemsClearforeachDataRowdrindtRowschklistTablesItemsAdddrTableName…3.4生成代码按钮的代码privatevoidtoolStripButton1_ClickobjectsenderEventArgse//调用GenerateCorecs中的Generate方法来生成代码。

        //绝大部分代码已经在设计原理中给出了这里不在重复给出了SystemThreadingThreadtnewSystemThreadingThreadnewSystemThreadingThreadStartgcGeneratetStart图3、4、6主要是一些参数的设置其代码部分比较简单在此不一一列出了。

        4结语主要讨论了通过XML、XSLT技术来设计NHibernate代码生成器使用XML来描述数据库结构而XSLT来完成模板功能最后通过C语言完成代码的生成目前代码生成技术已经广泛地应用到实际的项目开发之中大量的单位和个人都进入到这个方面通过设计模型驱动编码的思想已经逐步开始实现并应用到实际项目之中参考文献1陈翔王学斌吴泉源.代码生成技术在MDA中的实现.计算机应用研究200647.2范秋生.XML的代码生成器.长江大学学报自然科学版20085:2.3王忠杰战德臣徐晓飞.基于对象关系模型的企业应用软件代码生成器.计算机集成制造系统2007502.4袁永福.C发现之旅.收稿日期2009-4-621

    原创

    版权说明
    【设为主页】【加入收藏】【打印本文】【回到顶部】【关闭此页】
    •  相关文章 相关文章
      ·29, 基于灰色模糊评价的ERP选型决策
      ·四川理工学院成人教育学院毕业设计论文工作
      ·2007年第二季度全国教育科学&
      ·高职院校“校企共同体”机制的研究与实践
      ·扬州工业职业技术学院电子信息工程系毕业论
      ·职业技术学院学生毕业设计(论文)开题报告
      ·组建广西科技大学的设想
      ·【精品】第五届全国大学生机械创新设计大赛
      ·毕业设计(论文):职业技术学院机电一体化
    •  最新文件 最新文件
  • 特别推荐