在SQL上将过程性的、过时的CRUD代码和专有DBMS迁移到OO ORM
请原谅我长篇大论的解释,但我希望尽可能明确,希望得到尽可能多的关于我的情况的有用反馈。如果你不耐烦,可以跳到底部的问题 解释 在我目前的工作中,开发是用一种过时的语言进行的,这种语言与该语言附带的专有DBMS是硬连接的。该语言以CRUD为中心,本质上是一种美化的数据库查询/报告/更新语言,附带了一些编程特性。大多数程序都是自顶向下的过程,代码重用很少;更新一个记录通常需要同时更新许多纠缠不清的相关记录,您只需要“了解”,因为专有数据库没有固有的外键关系。如果一个表需要更新,我们通常必须grep我们的源代码并更新为该表创建/更新记录并重新编译的每个过程。我可以继续讨论其他的烦恼,但不用说,我正在寻找一种方法,尽可能多地将这种行为抽象为可重用的代码段 该语言最近添加了一些对面向对象开发的支持,我通过最近使用OO结构编写的项目向同事演示了可重用代码的好处。然而,我的项目之所以可能,是因为它是一项罕见的任务,不需要与我们的数据库交互 我一直在努力寻找一种方法,通过这种语言使用OO技术创建可重用的代码,但由于一切都是以数据库为中心的,所以我真正需要的是一种围绕表设计创建容器类的方法,将我们的大部分数据处理逻辑放入类方法中,并将N个相关表合并到一个单一类中。这让我想到了ORM框架,当然,在我工作中使用的语言中,ORM框架是不存在的 我发现,这种语言的DBMS可以与专有语言引擎同时运行SQL99引擎,它包括JDBC和ODBC驱动程序。这为我探索迁移策略打开了大门,我认为我们最终需要走这条路。由于SQL引擎与旧引擎同时运行,因此我们可以进行增量迁移,在旧代码的同时运行新代码,最终目标是在替换所有旧代码后将数据迁移到“纯”SQL DBMS 起初我读了很多书,并向我的经理推荐了Java(使用JPA2进行ORM),但我想我吓坏了他,因为他认为Java对于我们的需求来说有点重要。然后,我使用JRuby解释器(使用ActiveRecord或DataMapper for ORM)对Ruby进行了进一步的挖掘,并重新提出了Ruby,由于Rails似乎很好地适应了我们将开发转移到基于Web的前端的过程,我们正试图用我们的旧代码转移到基于Web的前端,当然,因为在需要时与Java交互的能力是一个很好的能力 问题在SQL上将过程性的、过时的CRUD代码和专有DBMS迁移到OO ORM,orm,activerecord,jpa,migration,datamapper,Orm,Activerecord,Jpa,Migration,Datamapper,请原谅我长篇大论的解释,但我希望尽可能明确,希望得到尽可能多的关于我的情况的有用反馈。如果你不耐烦,可以跳到底部的问题 解释 在我目前的工作中,开发是用一种过时的语言进行的,这种语言与该语言附带的专有DBMS是硬连接的。该语言以CRUD为中心,本质上是一种美化的数据库查询/报告/更新语言,附带了一些编程特性。大多数程序都是自顶向下的过程,代码重用很少;更新一个记录通常需要同时更新许多纠缠不清的相关记录,您只需要“了解”,因为专有数据库没有固有的外键关系。如果一个表需要更新,我们通常必须grep我
- 自上而下:从对象模型和映射开始,然后从该数据派生数据库模式
- 自下而上:从数据模型(即数据库模式)开始,从表中派生对象模型和映射
- 中间输出:从映射开始,生成对象模型和表
- 中间相遇:从现有数据库模式和现有对象模型开始,开发映射以在两者之间进行映射(甚至可以引入额外的对象层并桥接现有的对象层)