- 6
- 0
- 约4.85千字
- 约 8页
- 2017-09-03 发布于浙江
- 举报
利用hibernate中及SchemaExport生成数据表
利用hibernate中的SchemaExport生成数据表??
2010-12-05 23:10:36|??分类:?hibernate?|??标签:export??true??_cfg??映射??数据库??|字号?订阅
NHibernate之旅(19):初探SchemaExport工具使用
这篇文章是介绍,NHibernate的好文,适合正在研究该框架的朋友,本帖只做转载处理,而且根据作者的要求在文章中贴出相关链接,仅为学习之用如果觉得侵犯了您的权益,请来信告知,我们会尽快删除!作者:李永京(YJingLees Blog)出处:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。本节内容引入?SchemaExport工具?SchemaUpdate工具?实例分析?结语?引入我其实都是一直先编写持久化类和映射文件,然后使用SchemaExport工具生成数据库架构。这样的方式就是领域驱动设计/开发(DDD,Domain Driven Design/Development)。我的理解是系统的设计应该基于对象模型,主要考虑对象的设计和逻辑上,然后按照对象模型建立数据库关系模型,这才是现在面向对象开发的步骤,并不是上一篇先设计数据库然后再设计对象。用一幅图可以形象的说明领域驱动设计:当在设计时,我们的领域模型需要改变,只需修改NHibernate结构和应用程序,不需要修改数据库架构,只要利用SchemaExport工具重新生成数据库架构就可以了。但是使用数据库只是其中一种方式,我们也可以使用XML文件来存储数据。SchemaExport工具NHibernate的hbm2dll提供SchemaExport工具:给定一个连接字符串和映射文件,不需输入其他东西就可以按照持久化类和映射文件自动生成数据库架构,现在SchemaExport工具还不是很强大,但是一般应用足够了,它还是一个相当原始的API还在不断改进。SchemaExport工具就是把DDL脚本输出到标准输出,同时/或者执行DDL语句。SchemaExport工具提供了三个方法,分别是Drop()、Create()、Execute(),前两个方法实质是调用Execute()方法。通常使用Execute()方法来生成数据库架构的。SchemaUpdate工具在NHibernate2.0中新添加SchemaUpdate工具,可以用来更新数据库架构。但是我觉得没有什么作用,因为它不能Drop现有的表或列,也不能更新现有的列,只能添加新的表和列。如果我需要删除表或者列或者修改其中列,SchemaUpdate工具就显得无能为力了。实例分析知道了上面的知识就好好实战一下:看看具体怎么使用呢?1.SchemaExport工具实战通常我们使用生成数据库架构代码实例像这样:Configuration cfg=new Configuration();cfg.Configure();SchemaExport export =new SchemaExport(cfg);export.Execute(....);1.准备工作现在数据访问测试层新建一SchemaExportFixture.cs文件用于测试生成实战。声明一个全局变量_cfg,编写 [SetUp]方法在每个测试方法执行之前调用:[TestFixture]public class SchemaExportFixture{? ? private Configuration _cfg;? ? [SetUp]? ? public void SetupContext()? ? {? ?? ???_cfg = new Configuration();? ?? ???_cfg.Configure();? ? }? ? //测试......}2.测试Drop(script, export)方法[Test]public void DropTest(){? ? var export = new SchemaExport(_cfg);? ? export.Drop(true, true);}Drop(script, export)方法根据持久类和映射文件执行删除数据库架构。有两个参数,第一个为True就是把DDL语句输出到控制台,第二个为True就是根据持久类和映射文件执行删除数据库架构操作,经过调试可以发现Drop(script, export)方法其实质是执行了Execute(script, export, true, true)方法。3.测试Create(script, export)方
原创力文档

文档评论(0)