【发布时间】:2019-04-08 13:18:39
【问题描述】:
正在阅读 JPA here。 Entity 类的两个要求是
- 不得将类声明为 final。没有方法或持久实例变量必须声明为 final。
- 该类必须具有公共或受保护的无参数构造函数。
- 必须将持久实例变量声明为私有、受保护或包私有。
很想知道为什么需要这些条件?
【问题讨论】:
标签: jpa
正在阅读 JPA here。 Entity 类的两个要求是
很想知道为什么需要这些条件?
【问题讨论】:
标签: jpa
- 该类不得声明为 final。没有方法或持久实例变量必须声明为 final。
JPA 实现在您的实体前使用代理来管理例如:延迟加载。由于 final 类无法扩展,因此无法构建代理。
Hibernate 的一些实现可以持久化最终类,但它会影响性能more info。
- 该类必须具有公共或受保护的无参数构造函数。
这些框架和其他框架为了创建新对象使用 ```Class.newInstance()`` 这就是为什么需要无参数构造函数的原因。
- 永久实例变量必须声明为私有、受保护或包私有。
只能通过访问器或业务方法访问,从而允许在代理中进行拦截。
【讨论】:
原因是(至少其中一些):
【讨论】: