Начальная статья выглядит хорошо для меня. Тем не менее, судя по комментариям, некоторые комментарии, касающиеся перечислений Java, могут прояснить несколько вещей.
Тип enum в Java является классом по определению, но многие программисты склонны забывать об этом, потому что они скорее связывают его с «списком допустимых значений», как и в некоторых других языках. Это больше, чем это.
Итак, чтобы избежать этих операторов switch, было бы разумно поместить некоторый код и дополнительные методы в класс enum. Почти никогда не нужно создавать отдельный «enum-подобный реальный класс».
Рассмотрим также вопрос документации - хотите ли вы документировать фактическое значение вашего перечисления в базе данных? В исходном коде, отражающем значения (тип enum) или во внешней документации? Я лично предпочитаю исходный код.
Если вы хотите представить значения перечисления как целые числа в базе данных из-за скорости или по любой другой причине, это сопоставление также должно находиться в перечислении Java. По умолчанию вы получите отображение имени строки, и я доволен этим. Есть порядковый номер, связанный с каждым значением перечисления, но использование этого непосредственно в качестве отображения между кодом и базой данных не очень ярко, потому что этот порядковый номер изменится, если кто-то переупорядочит значения в исходном коде. Или добавляет дополнительные значения перечисления между существующими значениями. Или удаляет какое-то значение.
(Конечно, если кто-то изменит имя перечисления в исходном коде, сопоставление строк по умолчанию тоже станет неудачным, но это менее вероятно произойдет случайно. И при необходимости вы можете легче защититься от этого, добавив некоторые проверка во время выполнения и проверка ограничений в базе данных, как уже предлагалось здесь.)