Рекомендации по соглашениям об именах для полей сущностей и столбцов таблицы базы данных - PullRequest
2 голосов
/ 14 ноября 2011

Я использую hibernate для создания сущностей и таблиц базы данных, и меня смущают соглашения об именах:

давайте приведем пример:

у нас есть объект отдела следующим образом:

public class Department {

@Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "department_id", unique = true, nullable = false)
    @Basic(fetch = FetchType.EAGER)
    private long id;

    @NotBlank(message = "{name.required}")
    @Size(max = 25, message = "{long.value}")
    @Column(name = "department_name", length = 25, nullable = false)
    private String name;

    @Column(name = "department_admin_id", nullable = true)
    private Integer adminId;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "ik_parent_department_id")
    // set the generated column name
    private Department parentDepartment;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "department_id")
    private Set<Employee> employees = new HashSet<Employee>(0);


}

что лучше при названии, например, поля отдел администратора , вы называете столбец как отдела_админа_ид или admin_id а как насчет падежа (нижний / прописной)?

и когда вы называете свойство , как вы его называете, DepartmentAdminId или adminId ?

, пожалуйста, посоветуйте, какова лучшая практика в таком случае, спасибо.

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

Если ваша таблица называется department, тогда во всех ее столбцах, начинающихся с department_, нет особой выгоды Просто позвоните им id, name, admin_id и т. Д.

В конце концов, члены вашего класса не имеют префиксов таким образом, не так ли? Столбцы уже имеют неявное отношение к department, находясь в таблице department. Дальнейшее объяснение слишком многословно и не нужно.

Изменить:
На уроках Java я бы использовал чехол для верблюдов. Для имени столбца я бы отделился подчеркиванием. Большинство БД нечувствительны к регистру с именами таблиц и столбцов.

3 голосов
/ 14 ноября 2011

Я бы выбрал свойства на основе Java и имена столбцов на основе БД, поэтому:

@Column(name = "FAVORITE_QUOTE")
private String favoriteQuote;

В OO-мире вы работаете с соглашением Java (верблюжий случай) и в то же время сохраняетесоглашение с БД (в верхнем регистре и с подчеркиванием).Если у вас уже есть сгенерированная схема БД, вам, как правило, нужно приспособиться к этой схеме.

А если вы генерируете схему - вы не хотите раздражать своего будущего администратора БД; -)

РЕДАКТИРОВАТЬ: Я бы предпочел пойти с favoriteQuote вместо userFavoriteQuite, как я считаю, излишним.Тем не менее, я видел много соглашений с БД, в которых префикс столбца с именем сущности каким-то образом облегчает для администраторов баз данных написание запросов.

...