Должен ли я указывать имена через @Column и @Table всегда или только при необходимости - PullRequest
3 голосов
/ 11 июля 2011

Это больше вопрос наилучшей практики, в надежде извлечь уроки из опыта других. Вы бы рекомендовали всегда указывать имена столбцов и таблиц в явном виде, используя @Column (name =) и @Table (name =)? Я немного обеспокоен тем, что некоторые детали реализации могут измениться. Кроме того, указание этого может обеспечить некоторую устойчивость против рефакторинга моего кода. Я также думаю, что это может сделать код более понятным для явного указания имен. С другой стороны, это делает код более многословным там, где его много не нужно.

Ответы [ 2 ]

4 голосов
/ 11 июля 2011

Поскольку речь идет о передовой практике, я могу только поделиться своей точкой зрения. По моему мнению, ключевой вопрос: «Насколько гибок ваш дизайн базы данных?» (что, вероятно, сводится к тому, насколько изменчива модель вашего домена).

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

Отсутствие имени таблицы и столбца только снижает читабельность кода, и при правильном дизайне мы можем быть уверены, что имя не вызовет чрезмерной устойчивости при рефакторинге. Я должен быть в состоянии восстановить мою модель сущности, и рефакторинг может быть выполнен изящно на уровне абстракции. Надеюсь, я ясно выразил свои мысли.

1 голос
/ 11 июля 2011

Мои 2 цента: для данного проекта делайте это всегда или никогда, но не путайте вещи.В крупных организациях я видел (полезно?) Рекомендации по проектированию баз данных, которые заставляют вас определять таблицы и столбцы на основе определенных соглашений об именах, например Аббревиатура проекта _ Счетчик _ Таблица .Это приводит к именам таблиц, таким как MYPROJ_CUSTOMER_1, без сомнения, это не должно быть именем наших классов Java.

Кстати: я фанат orm.xml, который позволяет вам удалить специфику базы данных из ваших классов Java и принестиэто обратно в XML.Я знаю, что это не модно: -)

...