【问题标题】:Best practice to move data from an older object to a new object design [closed]将数据从旧对象移动到新对象设计的最佳实践 [关闭]
【发布时间】:2018-03-15 03:25:46
【问题描述】:

我选择了一个较旧的项目,它从来没有很好地使用对象。 比如说对象是 Driver。

而不是像这样初始化字段

private String firstName;
private String lastName;
private Date dateOfBirth;

该代码旨在使用字符串映射来存储所有内容...

protected Map<String, String> data;

显然,每次将字符串转换为不同的数据类型都很麻烦。

所有数据都存储在 MySQL 的 Blob 中,因此回填似乎是唯一的解决方案。就像调用所有存储的驱动程序对象并创建一个将数据映射到字段然后恢复对象的方法。

我不确定这里的最佳实践是什么,希望你们能对对象重构有所了解。

谢谢!

【问题讨论】:

  • 你的意思是所有的项目?对于数据库,您可以重命名旧表,重新创建它,然后使用INSERT INTO Driver SELECT FROM Driver_Old“恢复”所有数据。对于应用程序,语言是什么?你会在这个新版本中使用它吗?
  • 这里唯一的“最佳实践”就是卷起袖子做脏活。
  • 是的,整个项目。该应用程序使用 Java 编写,使用 MySQL 作为数据库,使用 struts2、jsps 和 servlet 作为前端。 @MiguelKVidal
  • @ThePirateBae 有时候,造一个新孩子比洗脏孩子更容易。
  • @ThePirateBae 正如我所说,您需要分析数据库并验证这里的可能性。这些 blob 列上使用的结构是什么?你可以在那里写文字。如果你能读懂它,你可以用它来做一个新的插入。

标签: java mysql database oop refactoring


【解决方案1】:

从数据库的角度来看,您需要分析您拥有的数据并重新创建表。 (甚至可能重新创建数据库?)

如果你有办法读取旧表上的数据,你可以这样做:

  1. 将表 Driver 重命名为 Driver_Old
  2. 使用新结构创建一个新的Driver
  3. 将旧表中的所有数据插入新表中,使用类似INSERT INTO Driver SELECT * FROM Driver_Old

但是对于代码库,您还有另一个问题。 从那里,我可以看到 2 种不同的方法:

A - 从头开始​​创建一个新项目,然后慢慢迁移业务逻辑。

B - 更新项目代码库以匹配您的新数据库架构,然后调整需要调整的所有内容。

什么更好?很难说。

您需要分析数据库和您拥有的代码。

如果是生产数据库,那么最佳做法是在开发环境中进行。

【讨论】:

  • 你就是那个男人。感谢您的帮助。
猜你喜欢
  • 2011-08-14
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
相关资源
最近更新 更多