Как называть поля класса-сущности?
От: Michael_Y Украина  
Дата: 27.10.06 10:46
Оценка:
Всем привет.

Возник вопрос. Как лучше называть поля класса, замапленного через Hibernate? Осмысленно или так же, как и поля таблицы?
Например:
Есть таблица атрибутов:
create table ATRS (
  ATRS_ID int not null,
  ATRS_NM varchar(64) not null,
  constraint PK_ATRS PRIMARY KEY CLUSTERED ( ATRS_ID )
)


Какой класс маппинга лучше написать, такой:
public class Attribute {
    /**
     * Код поля
     */
    private Integer id;
    /**
     * Имя поля
     */
    private String name;

...
}

или такой:
public class Attribute {
    /**
     * Код поля
     */
    private Integer atrs_id;
    /**
     * Имя поля
     */
    private String atrs_nm;

...
}


Какие мысли на этот счет?

27.10.06 15:21: Перенесено модератором из 'Java' — Blazkowicz
Re: Как называть поля класса-сущности?
От: JFreeM Украина  
Дата: 27.10.06 11:03
Оценка: 2 (1)
Здравствуйте, Michael_Y, Вы писали:

M_Y> Всем привет.


M_Y> Возник вопрос. Как лучше называть поля класса, замапленного через Hibernate? Осмысленно или так же, как и поля таблицы?

M_Y> Например:
M_Y>Есть таблица атрибутов:
M_Y>
M_Y>create table ATRS (
M_Y>  ATRS_ID int not null,
M_Y>  ATRS_NM varchar(64) not null,
M_Y>  constraint PK_ATRS PRIMARY KEY CLUSTERED ( ATRS_ID )
M_Y>)
M_Y>


M_Y>Какой класс маппинга лучше написать, такой:

M_Y>
M_Y>public class Attribute {
M_Y>    private Integer id;
M_Y>    private String name;
M_Y>}
M_Y>

M_Y>или такой:
M_Y>
M_Y>public class Attribute {
M_Y>    private Integer atrs_id;
M_Y>    private String atrs_nm;
M_Y>}
M_Y>


M_Y> Какие мысли на этот счет?


Второй вариант плох по таким соображениям:
1. Вам придется "_" переносить в геттеры и сеттеры, соответственно они будут встречаться еще где-либо по коду, что есть плохо. Наконец, просто противоречит сановским соглашениям, хотя вы можете их и не использовать, в таком случае, второй вариант подходит.
2. Если же геттеры будут иметь вид "getAtrsId()", плохо плослеживается связь — пробовал раз так сделать, чертыхался долго потом.

Имхо, оптимальным вариантом было бы

create table ATRS (
    ID int not null,
    NM varchar(64) not null,
  constraint PK_ATRS PRIMARY KEY CLUSTERED ( ATRS_ID )
)


public class Attribute {
    private Integer id;
    private String name;
}


поскольку я не вижу необходимости дублировать название таблицы в названии поля.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Как называть поля класса-сущности?
От: dshe  
Дата: 27.10.06 11:05
Оценка: 1 (1) +1
Здравствуйте, Michael_Y, Вы писали:

M_Y> Всем привет.


M_Y> Возник вопрос. Как лучше называть поля класса, замапленного через Hibernate? Осмысленно или так же, как и поля таблицы?


Осмысленно. Впрочем, поля таблицы тоже желательно называть осмысленно.
--
Дмитро
Re[2]: Как называть поля класса-сущности?
От: MaximVK Россия  
Дата: 30.10.06 13:33
Оценка:
Здравствуйте, JFreeM, Вы писали:

JFM>поскольку я не вижу необходимости дублировать название таблицы в названии поля.


Есть таки один аргумент в пользу использования названия таблицы в имени identity поля. Таблицы удобней джойнить когда у полей одинаковые имена, т.е. имхо такой вариант удобней и меньше подвержен ошибкам
select * from Orders ord join OrderProducts opr on ord.OrderID = opr.OrderID
чем
select * from Orders ord join OrderProducts opr on ord.ID = opr.OrderID
Re[3]: Как называть поля класса-сущности?
От: dshe  
Дата: 30.10.06 14:34
Оценка:
Здравствуйте, MaximVK, Вы писали:

MVK>Здравствуйте, JFreeM, Вы писали:


JFM>>поскольку я не вижу необходимости дублировать название таблицы в названии поля.


MVK>Есть таки один аргумент в пользу использования названия таблицы в имени identity поля. Таблицы удобней джойнить когда у полей одинаковые имена, т.е. имхо такой вариант удобней и меньше подвержен ошибкам

MVK>
select * from Orders ord join OrderProducts opr on ord.OrderID = opr.OrderID
чем
select * from Orders ord join OrderProducts opr on ord.ID = opr.OrderID


Это субъективно. Мне больше нравится второй вариант потому что сразу видно где первичный ключ, а где внешний. Кроме того, "правило одинаковых имен" невозможно применить, когда между двумя таблицами есть больше одной связи. В этом случае
select * from Orders ord join OrderProducts opr on ord.OrderID = opr.PrimaryOrderID
и
select * from Orders ord join OrderProducts opr on ord.OrderID = opr.SecondaryOrderID

не более удобен и не менее подвержен ошибкам чем
select * from Orders ord join OrderProducts opr on ord.ID = opr.PrimaryOrderID
и
select * from Orders ord join OrderProducts opr on ord.ID = opr.SecondaryOrderID
--
Дмитро
Re[4]: Как называть поля класса-сущности?
От: MaximVK Россия  
Дата: 30.10.06 14:42
Оценка: +1
Здравствуйте, dshe, Вы писали:

D>Это субъективно.

Конечно! Именно поэтому я и использовал "ИМХО" в своем высказывании.

D>Мне больше нравится второй вариант потому что сразу видно где первичный ключ, а где внешний. Кроме того, "правило одинаковых имен" невозможно применить, когда между двумя таблицами есть больше одной связи.

Согласись, таких случаев гораздо меньше, чем случаев с одной связью.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.