【发布时间】:2010-01-11 09:21:54
【问题描述】:
JPA 2.0 specification 在第 22 页上说:
类的实例变量必须 是私有的、受保护的或打包的 可见性独立于是否 字段访问或属性访问是 用过的。当使用属性访问时, 属性访问器方法必须是 公开或受保护。
为什么不允许公共访问?
【问题讨论】:
标签: java jpa jakarta-ee
JPA 2.0 specification 在第 22 页上说:
类的实例变量必须 是私有的、受保护的或打包的 可见性独立于是否 字段访问或属性访问是 用过的。当使用属性访问时, 属性访问器方法必须是 公开或受保护。
为什么不允许公共访问?
【问题讨论】:
标签: java jpa jakarta-ee
使用公共字段,代理将无法可靠地工作——如果有人直接访问一个字段,那么持久性框架就没有简单的方法来拦截该调用并(例如)初始化包含对象,如果这是一个代理。
如果无法访问字段,则可以在代理对象上生成合成 getter 方法以拦截方法调用并执行任何所需的“幕后”工作。
【讨论】:
使用 DataNucleus 作为 JPA 提供者,您可以使用公共字段,但是您需要将访问这些字段的任何类标记为“持久性感知”(请参阅 DataNucleus 文档),这样它们就可以增强以迎合这一点
【讨论】:
确保使用访问器方法(如 get... set.... is.... )。这是隔离原则的一部分。
【讨论】: