【问题标题】:When do I need constructor in an Spring entity?我什么时候需要 Spring 实体中的构造函数?
【发布时间】:2022-01-15 03:41:32
【问题描述】:

我是 Spring 新手,现在正在开发一个基于 Spring Boot 的 Java 项目。当我使用实体框架时,我看到了用于延迟加载的类似用法。但我不确定 Spring Framework 是否属实。您能否解释一下为什么 Spring 中的某些实体类使用构造函数?

public class Employee extends BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employee_gen")
    private long id;

    @Column(nullable = false)
    private String name;


    public Employee(
            @Nonnull String name
    ) {
        this.name = name;
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }

    @Override
    public boolean equals(Object other) {
        return super.equals(other);
    }
}

【问题讨论】:

    标签: java spring spring-boot spring-data-jpa entity


    【解决方案1】:

    如果您想在字段中设置值并且不想使用 getter setter,那么您只需将值作为构造函数传递,以便它会自动初始化对象;

    否则,你必须这样做

    没有构造函数

    Employee emp = new Employee ();
    emp.setName("ex");
    

    带构造函数

    Employee emp = new Employee ("ex");
    

    【讨论】:

    • 那么如果我不需要使用构造函数,我就不应该在实体中定义if,是吗?
    • 是的,确实如此。
    【解决方案2】:

    声明构造函数的目的是初始化类中对象的数据字段。 constructors 就像object-oriented design 的看门人一样工作

    为什么在 Spring Boot 中使用构造函数

    • 使用实体的所有必需字段创建构造函数

    • 原因:构造函数应该始终让创建的实例保持相同的状态。

    【讨论】:

    • 非常感谢,投了赞成票;)
    猜你喜欢
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2011-09-27
    • 2011-03-30
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多