为什么我们在JPA中需要空构造函数.??

ash*_*ein 0 jpa

现在,我正在学习JPA.JPA建议我们必须有Public方法和私有字段,并且没有static和final with variable.还有空构造函数..为什么我们需要这种格式.???

Mik*_*unu 5

实际上规范不建议,它是关于以下(除其他事项)之外的规范性:

  1. 必须存在public或protected no-arg构造函数.额外的构造函数很好.
  2. 持久字段不应该是公共的(受保护,包可见和私有都是大声的).
  3. 最终的持久属性或方法不是大声的.

这些限制的一些原因是:

  1. JPA提供程序需要创建实体实例.如果类只包含带有任意参数的构造函数,则JPA提供程序无法计算出这些参数的值.
  2. 可能公共可见性根本不是大声的,因为不应该从课外直接访问字段.或者也许有更好的理由,但我不知道这一点.
  3. 提供者想要创建代理,如果方法是最终的,则不可能.属性也不应该是最终的,因为提供者不能为它们赋值.

另外,静态持久属性没有太大意义,因为为什么一个值将由所有实体实例共享.