JPA 2.0 specification在第22页上说:
类的实例变量必须 是私人的,受保护的或包装的 能见度与是否无关 现场访问或属性访问是 用过的。使用属性访问时, 属性访问器方法必须是 公共或受保护。
为什么不允许公共访问?
答案 0 :(得分:10)
对于公共字段,代理无法可靠地工作 - 如果有人直接访问字段,那么持久性框架没有简单的方法来拦截该调用并且(比如)初始化包含对象,如果这是代理人。
如果无法进行字段访问,则可以在代理对象上生成合成getter方法,以拦截方法调用并执行任何所需的“幕后”工作。
答案 1 :(得分:4)
使用DataNucleus作为JPA提供程序,您可以使用公共字段但,然后您需要将访问这些字段的任何类标记为“持久感知”(请参阅DataNucleus文档),因此它们可以是增强以满足此
答案 2 :(得分:-1)
确保使用访问器方法(例如get ... set .... is ....)。这是隔离原则的一部分。