Как справиться с дублированием между перечислением java и таблицей базы данных? - PullRequest
11 голосов
/ 27 марта 2009

В наших приложениях довольно распространенная ситуация, когда некоторые сущности должны быть представлены перечислением: например, типы, категории, статус и тому подобное.

Часто в коде есть условия или потоки, которые используют значения для выбора между тем или иным действием, поэтому значения должны быть «известны» каким-то образом для приложения (т. Е. Оно должно иметь возможность ссылаться на конкретный экземпляр, чтобы решить вместо ссылки на класс в целом). Вот почему мы используем перечисления вместо обычного класса.

Проблема в том, что эти объекты также должны храниться (или, по крайней мере, указываться) в базе данных как поля других объектов. Мы обычно создаем таблицу для каждой сущности, чтобы иметь возможность проводить проверки ссылочной целостности в этих столбцах, а также чтобы данные имели «значение» только в базе данных без необходимости обращаться к перечислению, чтобы выяснить, что означает каждый идентификатор .

В идеале данные для этих объектов должны быть заполнены данными из перечисления, но в настоящее время у нас есть значения, дублированные в сценариях инициализации db.

Это становится немного сложнее, когда используется ORM, подобный Hibernate.

Я хотел бы знать, как другие люди справляются с такой ситуацией.

Я не совсем доволен идеей дублирования между enum и таблицей базы данных, но лучшего решения пока не нашел.

Ответы [ 2 ]

2 голосов
/ 27 марта 2009

Попробуйте ответить на этот вопрос: Способы сохранения перечислений в базе данных

1 голос
/ 28 марта 2009

У меня та же проблема для моего приложения JPA / Hibernate. Я динамически создаю запись enum в базе данных по мере их появления. При этом он автоматически заполняется по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...