Как сделать данные слабо связаны с кодом приложения?

Я унаследовал кодовую базу проекта от разработчика, который работал над этим. Я должен сделать некоторые изменения в этом.

Скажем, у меня есть таблица "АВТОМОБИЛИ" с 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") всегда имеет статический результат, и я думаю, что нет никаких проблем, связанных с объектно-ориентированным дизайном.

Другие вопросы по тегам