用angular创建模型类的最佳方法是什么?

时间:2019-01-15 13:10:46

标签: angular spring-boot jpa

我想就如何创建用于与数据库交互的角度模型类提出建议 假设我的春季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类将数据发布到服务器。但是在获取数据的同时,我还需要在我的角度应用程序中将主键envSidenvName一起使用。 我需要针对这两种情况创建两个不同的模型吗?在执行POST请求时只有一个envName的模型,而在执行GET请求时只有envSidenvName的一个模型?

2 个答案:

答案 0 :(得分:1)

这是我一直在思考的一个问题,以下是我的结论。我很高兴讨论它是否总是有意义。

我使用的原则是:您的模型应具有对完整对象有意义的所有字段。

对于您而言,这意味着id应该是模型的一部分。

其背后的理由是:

  • 操作对象时,您要依赖于您拥有完整对象的事实,而不是尚未保存到数据库或其他任何形式的半形对象。否则,您必须考虑以下事实:每个操作(更新等)中的对象可能不完整
  • 有意义的是,用于创建对象的数据(您提到的POST请求)还不是对象,而仅仅是初始化数据。有时,它甚至可能没有映射到模型的特定字段,因此,最好将它们分开。

在您的情况下,我确实会有两个模型:EnvironmentInitializeDataEnvironmentModel或其他名称,您就会明白。

顺便说一句,由于初始化数据通常仅使用一次且简单易用,因此不一定总是将其表示为类型。

答案 1 :(得分:0)

好的做法是,每个数据传输对象创建1个模型接口。因此,对于您的情况,您应该执行以下操作:

environment.model.ts

Map<String,List<Book>>

environmentToPost.model.ts

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