Какие шаблоны проектирования нужно обрабатывать, когда объект домена изменяется, а база данных - нет? - PullRequest
1 голос
/ 06 октября 2019

Рассмотрим следующее Enum:

enum Size{
  SMALL,
  MIDDLE,
  LARGE
}

, которое мы сохраним в базе данных, используя метод toString. Теперь позже мы решаем изменить MIDDLE на MEDIUM. Но мы не можем обновить базу данных, поэтому теперь у нас будет храниться смесь значений MIDDLE и MEDIUM.

Какие существуют шаблоны проектирования для обработки этого преобразования Java?

1 Ответ

0 голосов
/ 07 октября 2019

Перечисления представляют константы в программах Java. Так что в идеале они не должны быть изменены. Но, тем не менее, если у вас есть requrement / usecase, где вы не можете избежать этого, есть более чистый способ сделать это.

Рассмотрите код ниже:

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
...