Как сделать данные слабо связаны с кодом приложения?
Я унаследовал кодовую базу проекта от разработчика, который работал над этим. Я должен сделать некоторые изменения в этом.
Скажем, у меня есть таблица "АВТОМОБИЛИ" с 2 столбцами
ID | CARNAME
1 | HYUNDAI
2 | FORD
3 | БМВ
Привязать к модельному классу "Автомобиль":
public Class Car{
@Id
@Column(name="ID")
private Long id;
@Column(name="FORD")
private String carName;
//getters and setters...
}
и в моем фрагменте кода (скажем, в некотором классе контроллеров) я должен увидеть, является ли данный автомобиль автомобилем FORD, условный код будет выглядеть примерно так:
if(thisCar.getCarName()=="FORD")
или же
if(thisCar.getId()==2L)
но это создает некоторые проблемы зависимости между БД и приложением. Что делать, если я очищаю таблицу машин или реструктурирую ее, и в результате вход в машину FORD идет по первичному ключу 3, то же самое относится и к строке "FORD". что, если завтра он изменится на "FORDspeed" или что-то в этом роде. Я должен был бы изменить свой код соответственно.
как сделать мой код слабо связанным в этом смысле с данными.
1 ответ
Я думаю, что вы не должны полагаться на идентификатор поля, потому что это может измениться, как вы сказали. Итак, фраза if(thisCar.getId()==2L)
Может иметь другой результат позже, поэтому вам следует избегать его. Но я думаю if(thisCar.getCarName()=="FORD")
всегда имеет статический результат, и я думаю, что нет никаких проблем, связанных с объектно-ориентированным дизайном.