Как лучше всего создать модель класса в угловых? - PullRequest
0 голосов
/ 15 января 2019

Мне нужно предложение о том, как создать класс модели в угловых для взаимодействия с базой данных Скажем, моя весенняя сущность JPA - Environment.java

    @Entity
    public class Environment {

        @Id
        @GeneratedValue(strategy=GenerationType.SEQUENCE)
        @Column(name = "ENV_SId", nullable = false)
        private Long envSid;

        @Column(name = "ENV_NAME",nullable = false)
        private String envName;

        public Long getEnvSid() {
            return envSid;
        }

        public void setEnvSid(Long envSid) {
            this.envSid = envSid;
        }

        public String getEnvName() {
            return envName;
        }

        public void setEnvName(String envName) {
            this.envName = envName;
        }
    }

Мой класс угловой модели - environment.model.ts

    export class Environment {
        envName: string;
    }

Поскольку первичный ключ генерируется автоматически, я буду использовать свой класс environment.model.ts для отправки данных на сервер. Но при получении данных мне также нужен первичный ключ envSid вместе с envName в моем угловом приложении. Нужно ли создавать две разные модели для двух случаев? Одна модель с envName при выполнении запроса POST и одна модель с envSid и envName при выполнении запроса GET?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

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

Принцип, который я использую: ваша модель должна иметь все поля, которые имеют смысл для законченного объекта.

В вашем случае это означает, что id должен быть частью модели.

Обоснование этого:

  • Когда вы манипулируете объектом, вы хотите полагаться на тот факт, что у вас есть полный объект , а не наполовину сформированный объект, который еще не сохранен в базе данных или чем-либо еще. В противном случае вы должны учитывать тот факт, что ваш объект может быть неполным в каждой операции (обновление и т. Д.)
  • Имеет смысл, что данные, которые вы используете для создания объекта (запрос POST, который вы упомянули), это еще не объект , а просто данные инициализации. Иногда он может даже не отображаться на конкретные поля вашей модели, поэтому рекомендуется хранить их отдельно.

В вашем случае, у меня действительно было бы две модели: EnvironmentInitializeData и EnvironmentModel или как угодно, вы поняли.

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

0 голосов
/ 15 января 2019

Хорошей практикой является создание 1 интерфейса модели на Объект передачи данных . Так что в вашем случае вы должны сделать что-то вроде этого:

environment.model.ts

export interface Environment {
    envName: string;
    envSid: number;
}

environmentToPost.model.ts

export interface EnvironmentToPost {
    envName: string;
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...