java - 当域对象发生变化但数据库没有变化时,有哪些设计模式可以处理?

标签 java database design-patterns entity domain-driven-design

考虑以下枚举:

enum Size{
  SMALL,
  MIDDLE,
  LARGE
}

我们将使用其 toString 方法将其保存到数据库中。现在,稍后我们决定将 MIDDLE 更改为 MEDIUM。但我们无法更新数据库,因此现在我们将混合存储 MIDDLEMEDIUM 值。

有哪些设计模式可以处理这种转换java?

最佳答案

枚举代表java程序中的常量。所以理想情况下它们不应该被改变。 但是,如果您有无法避免这种情况的需求/用例,那么还有一种更简洁的方法可以做到这一点。

考虑下面的代码:

public enum Size {
    SMALL("SMALL"),
    MEDIUM("MIDDLE"),
    LARGE("LARGE");

    String dbName;
    Size(String dbName) {
        this.dbName = dbName;
    }

    public String getDbName() {
        return dbName;
    }
}

调用函数:

public class Test {
    public static void main(String[] args) {
        System.out.println(Size.MEDIUM.toString());
        System.out.println(Size.MEDIUM.getDbName());
    }
}

但是为此,您必须在持久层中将 toString 替换为 getDbName()

输出:

MEDIUM
MIDDLE

关于java - 当域对象发生变化但数据库没有变化时,有哪些设计模式可以处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58260479/

相关文章:

java - MessageDigest.update(byte[]) 是做什么的?

java - 默认获取android手机号码

java - 为 java.net.URI getUserInfo 处理具有 '@' 的 URL

java - Calendar.getInstance()...基本问题

php - 我需要帮助获取用户组代码,然后使用 PHP 和 MySQL 显示这些组的帖子

在 if/else block 中进行 Java 转换

c# - Linq to Sql 查询两次返回相同的记录

php - 我如何在我的数据库中插入或更新一个条目,如果更新我如何添加到现有值

design-patterns - 构建器模式与构造函数中的参数数量有关吗?

c# - 如何以更清洁的方式处理大型工厂