Технология: - 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, и если его целесообразно использовать в данном сценарии.
Каков наилучший метод для определения констант дБ?
Действительно ли полезно использовать константы БД?
Если я использую один класс для каждой таблицы, как упомянуто выше, одной проблемой, с которой я сталкиваюсь, является соглашение об именовании.Каким должно быть отношение между именем таблицы и именем соответствующего класса, которые определяют константы для столбцов таблицы.
Выше приведены случаи только для имен столбцов, а не имени таблицы.Я могу использовать константу, а не имя таблицы, в коде, так что следует использовать для определения констант для имен таблиц.
Часто утверждается, что имя таблицы и имена столбцов не сильно меняются после выпуска продукта или связанной версии.Изменения в имени таблицы и имени столбца происходят в основном на этапе разработки или улучшения функции (новая версия).Это сильный аргумент, чтобы избежать использования констант для имен таблиц или столбцов?
Подскажите, пожалуйста, как я могу сделать мой вопрос более представительным или чего мне не хватает, чтобы за мои вопросы не проголосовали?