Hibernate / JPA中可能有不可变的字段吗?
在我们的应用程序中,我们需要有只能分配一次的字段。
起初,我们想到封装领域并使制定者保密。 但是,一些问题引起了:
提前致谢。
广告。 1:如果注释放在字段而不是getter上,我相信JPA使用纯专用字段进行读写。 最近我发现Hibernate作为底层的JPA提供者甚至不需要get*()
和set*()
方法。 这是从一开始我就认为Hibernate需要访问者的真正有启发性的解决方案。 所以答案是:就Hibernate而言, 您不需要setter 。
广告。 2:但请注意,Hibernate仍然需要无参数构造函数,否则它将无法加载具有描述性异常的实体。 这也是JPA的要求。
广告。 3:不,没有。 请记住,您的收藏也必须是不可变的。
尝试
@Column(updatable = false)
并让你的二传私人。 (如果你想要让你的吸气器公开)
我认为这是最佳做法。
PS:JPA使用字段访问,如果你注释你的字段,并使用getter / setter访问,如果你注释你的getter方法。
在JPA 2.0中,您有两种方法来定义应该保留哪些属性:
如果没有使用Access( - )注解,决定使用什么访问取决于你放置@Id注释的地方。 如果你把它放在你的字段旁边 - 将使用Access(FIELD)。 如果你把它放在你的访问器旁边 - 将使用Access(PROPERTY)。
因此,如果使用Access(FIELD),则不必为特定字段提供适当的JavaBeans样式访问器。 您可以拥有一个名为'myField'的私人字段和一个名为'public setBlahBlah( - )'的公开setter。 JPA将坚持只有'myField'。
链接地址: http://www.djcxy.com/p/37005.html上一篇: Is it possible to have immutable fields in Hibernate/JPA?
下一篇: To equals and hashcode or not on entity classes, that is the question