实体 class 必须有无参数的构造函数
Entity class must have non argumented constructor
我正在学习 JPA,所以在学习 JPA BLOG Vogella 1.2 Entity Heading 时,我遇到了一行:
All entity classes must define a primary key, must have a non-arg
constructor and or not allowed to be final
我无法理解这一行。我们是否需要专门编写一个非参数构造函数,因为默认的非参数构造函数总是由 classes.
继承
不允许是最终的是什么意思,这是否意味着我们总是可以扩展实体 class?如果是这样为什么这个强制,为什么它不能是最终的
默认情况下,当您的 class 中没有定义与 JPA 无关的构造函数时,您将获得非参数构造函数。是的,如果您正在定义一个构造函数,那么您必须定义无参数构造函数,例如:
public class Student {
public Student() {}//default ctor which is needed by JPA to convert row from DB to java object
public Student(int id) {..}//ctor which accepts one arg
}
使 class 最终意味着你不能 subclass。像 Hibernate 这样的 JPA 供应商创建代理来延迟获取行,这最终会限制您的性能调整选项。因此,根据您的用例,您会看到 class may/may 不是最终的。
我正在学习 JPA,所以在学习 JPA BLOG Vogella 1.2 Entity Heading 时,我遇到了一行:
All entity classes must define a primary key, must have a non-arg constructor and or not allowed to be final
我无法理解这一行。我们是否需要专门编写一个非参数构造函数,因为默认的非参数构造函数总是由 classes.
继承不允许是最终的是什么意思,这是否意味着我们总是可以扩展实体 class?如果是这样为什么这个强制,为什么它不能是最终的
默认情况下,当您的 class 中没有定义与 JPA 无关的构造函数时,您将获得非参数构造函数。是的,如果您正在定义一个构造函数,那么您必须定义无参数构造函数,例如:
public class Student {
public Student() {}//default ctor which is needed by JPA to convert row from DB to java object
public Student(int id) {..}//ctor which accepts one arg
}
使 class 最终意味着你不能 subclass。像 Hibernate 这样的 JPA 供应商创建代理来延迟获取行,这最终会限制您的性能调整选项。因此,根据您的用例,您会看到 class may/may 不是最终的。