Технологии: - Java 1.5 или 1.6 - Hibernate 3.4
Чтобы избежать обновления имени столбца в нескольких местах при изменении имени столбца или имени таблицы, я хочу иметь для него постоянный файл.
У меня есть следующие вопросы?
Одно из возможных решений - поддерживать один глобальный файл, в котором хранятся константы для имен столбцов всех таблиц в базе данных. как
class DbConstants { public static final String EMPLOYEE__PERFORMANCE_DESC="performance_desc"; }
В приведенном выше случае сотрудники - это имя таблицы, а performance_desc - имя столбца. Таким образом, вид формата tablename__columnname используется для наименования константы, чтобы избежать столкновения между двумя константами из двух разных таблиц, если обе имеют имя столбца.
Одна проблема с этим подходом, которую я вижу, заключается в том, что по мере роста базы данных никакие константы в этом файле не вырастут до тысяч, что трудно контролировать. Другая проблема заключается в том, что если имя таблицы изменено, мне нужно изменить имя таблицы префиксов для всех таблиц.
Предположим, если я изменил имя столбца в приведенном выше примере с performance_desc на достижения_desc. В этом случае очень вероятно, что я захочу также изменить константу, т.е. с EMPLOYEE__PERFORMANCE_DESC на EMPLOYEE__ACHIEVEMENT_DESC. Поскольку в этом случае мне нужно было изменить как имя столбца, так и имя константы, я не вижу особого смысла использовать константу вместо имени столбца непосредственно в моем коде, хотя есть одно преимущество, заключающееся в том, что при изменении имени константы я могу использовать преломление для отражения константы имя изменить имя везде, где есть ссылка. Кажется, либо использование констант не так уж много, либо я использую их неправильно.
В коде проекта мне кажется, что люди определяют один класс для каждого списка столбцов таблицы для определения констант, как показано ниже.
public class tbl_Employee { public static final PERFORMANCE_DESC=performance_desc; }
это может решить некоторые проблемы с глобальным файлом, например, изменение имени таблицы приведет только к изменению имени класса. Одна из основных проблем заключается в том, что я использую класс исключительно для определения констант, что не является хорошей практикой кодирования.
Прочтите кое-где о Enum со строкой значения, а не с int, не уверен, доступен ли он в java 1.5 или 1.6 и рекомендуется ли его использовать в данном сценарии.
Какова наилучшая практика для данного определения констант БД?
Действительно ли полезно использовать константы БД?
Если я использую один класс для каждой таблицы, как указано выше, одна проблема, с которой я сталкиваюсь, - это соглашение об именах. Какая должна быть связь между именем таблицы и именем соответствующего класса, которые определяют константы для столбцов таблицы.
Вышеуказанные случаи относятся только к именам столбцов, а не к имени таблицы. Я могу использовать в коде константу, а не имя таблицы, поэтому какой подход должен быть для определения констант для имен таблиц.
Часто утверждают, что имя таблицы и имена столбцов не сильно меняются после выпуска продукта или связанной версии. Изменения в имени таблицы и имени столбца происходят в основном на этапе разработки или улучшения функции (новая версия). Является ли веским аргументом избегать использования констант для имен таблиц или столбцов?
Подскажите, пожалуйста, как я могу сделать свой вопрос более представительным или чего мне не хватает, чтобы не проголосовать за мои вопросы?