使用MDSD开发安全可靠的软件
2010-06-30 00:00:00 来源:WEB开发网核心提示: 数据库模式出轨 通过使用数据关系映射工具(例如Hibernate)对数据库进行抽象既是一种赐福也是一种诅咒,一方面,使用MDSD开发安全可靠的软件(5),它为开发者提供了想要的数据库技术抽象;另一方面也隐藏了对不同版本间数据库模式的出轨(不匹配),对于每一次持久化模型的变更都将重新处理已部署应用
数据库模式出轨
通过使用数据关系映射工具(例如Hibernate)对数据库进行抽象既是一种赐福也是一种诅咒。一方面,它为开发者提供了想要的数据库技术抽象;另一方面也隐藏了对不同版本间数据库模式的出轨(不匹配)。对于每一次持久化模型的变更都将重新处理已部署应用的数据库模式。例如给领域对象添加一个新的持久化字段就需要给对应的数据库表添加一个新的列。如果持久化模型与数据库模式不同步,那我们就认为数据库模式出轨了。
>而MDSD方法保证了数据库模式不会出轨。如果我们以持久化模型作为主模型,根据该模型生成需要的数据库模式,那么我们就能够重用模型信息以处理兼容性问题。假设我们有不同的模型版本,我们就可以生成差异模型,差异模型会为我们提供非常有用的不同版本差异的信息。就像前面那样,我们可以生成一份变更报告,来查看变更影响。另外,我们还可以基于差异模型生成SQL升级脚本。我们不打算100%生成脚本,那不现实。对于复杂数据库模式情况,生成的脚本总是需要手动添加一些代码的。自动生成部分与手工编写部分的组合定义了数据库模式从一个旧的版本升级到一个新的版本。由于存在各式各样的SQL方言,所以提供已支持数据库的对应升级脚本是很重要的。如果系统支持多个数据库,那么这些脚本必须遵从对应方言。对于Ruby迁移[8]而言,Ruby社区提供了不依赖数据库(database-agnostic)的DSL来描述数据库模式变更。这些数据库模式变更描述将被翻译成不同方言的SQL语句。与直接生成SQL相比,模型驱动方法能够将差异模型变换成Ruby迁移表达。这样一来,生成SQL语句的责任就转移到了Ruby迁移。随着MDSD提供的支持,对于领域模型变更带来的恐惧消失殆尽。开发者可以不再犹豫对领域模型的演进,项目重获敏捷。
[]
- ››使用脚本恢复WinXP系统的用户登录密码
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››使用phpMyadmin创建数据库及独立数据库帐号
- ››使用Zend Framework框架中的Zend_Mail模块发送邮件...
- ››使用cout标准输出如何控制小数点后位数
- ››使用nofollow标签做SEO的技巧
- ››使用 WebSphere Message Broker 的 WebSphere Tra...
- ››使用SQL Server事件探查器做应用程序的性能分析
- ››使用SQL Server事件探查器分析死锁原因
- ››使用纯文本文件打造WCF服务
- ››使用 Dojo 开发定制 Business Space 小部件,第 4...
- ››使用 ADDRESS 与 INDIRECT函数查询信息
更多精彩
赞助商链接