В Java соглашение об именах для свойств en classes (entity) выполняется CamelCase способ:
@Entity
public class UserMessage implements Serializable {
@Id
private Integer id;
private String shortTitle;
private String longTitle;
private String htmlMessage;
}
Но в мире SQL его считают лучшей практикой использовать верхний регистр с подчеркиваниями между словами (например, Java-константами). В мире SQL также считается лучшей практикой включения имени таблицы в имена столбцов, таким образом, внешние ключи в большинстве случаев называются точно такими же, как идентификатор в исходной таблице.
CREATE TABLE USER_MESSAGE (
USER_MESSAGE_ID MEDIUMINT(8) NOT NULL,
USER_MESSAGE_SHORT_TITLE VARCHAR(20),
USER_MESSAGE_LONG_TITLE VARCHAR(80),
USER_MESSAGE_HTML_MESSAGE TEXT NOT NULL
);
Должен ли я выполнять оба стандарта и использовать атрибут name в @Table и @Column? Или я должен следовать соглашениям Java и полагаться на сопоставления JPA по умолчанию.
Каков наиболее распространенный подход и/или лучший подход к этому конфликту стандартов?