2009-03-27 2 views
10

В наших приложениях довольно распространенная ситуация, когда некоторые объекты должны быть представлены перечислением: например, типы, категории, статус и тому подобное.Как обрабатывать дублирование между java enum и таблицей базы данных?

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

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

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

Будет немного сложнее, если используется ORM, например, Hibernate.

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

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

+1

Это было задано много раз раньше - посмотрите на «связанные» ссылки с правой стороны –

ответ

2

Попробуйте ответить на этот вопрос: Ways to save enums in database

+0

Это очень простой вопрос, я его не нашел раньше. Тем не менее, похоже, что нет простого решения, так как ни один из ответов, похоже, не решает проблемы. – Sam

1

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

Смежные вопросы