一尘不染

Hibernate / JPA中是否可能有不可变的字段?

hibernate

在我们的应用程序中,我们需要具有只能分配一次的字段。

最初,我们想到封装字段并将设置程序设为私有。但是,引起一些问题:

  • 如果没有公共设置者,Hibernate是否仍然可以从数据库映射字段?
  • 我是否可以剥离设置器并使字段仅在实体构造函数中可变?
  • 最后,是否有任何标准的JPA方法使字段不变?

提前致谢。


阅读 243

收藏
2020-06-20

共1个答案

一尘不染

  • 广告。1:我相信,如果将注释放在字段而不是在getter上,则JPA会将普通私有字段用于读写。最近,我发现作为基础JPA提供程序的Hibernate甚至根本不需要get*(),也没有set*()方法。因为从一开始我就认为Hibernate需要访问器,所以这确实是一个启发性的解决方案。因此答案是:就Hibernate而言, 您不需要二传手

  • 广告。2:但是请注意,Hibernate仍然需要no-arg构造函数,否则它将无法加载具有描述性异常的实体。这也是JPA要求。

  • 广告。3:不,没有。请记住,您的收藏也必须是不变的。

2020-06-20