是否存在实现JPA但不需要默认的ORM框架
来自@Entity
类的(no-arg)构造函数?
AFAIK,在JPA文档中说@Entity
应该有默认值
构造函数,但可以实现支持构造函数参数注入
(或者可能是不安全的对象实例化),因此无需使用类
默认构造函数?
此功能有助于确保不变性(标准 JPA缺乏) 并且会让开发人员在类实例状态上保持严格的不变量 (例如,其字段始终具有正确的值)。
顺便说一句,当使用Kotlin时,无需arg构造函数的需要会干扰 良好的代码风格和编码惯例。
有JIRM
库处理构造函数注入和不变性,
但它不是一个完整的JPA实现。
那么,是否有任何JPA ORM支持没有默认构造函数的@Entity
类?
答案 0 :(得分:3)
是否有一个ORM框架实现了JPA,但是不需要@Entity类的默认(非arg)构造函数?
不,因为它会违反规范。以下引用来自JPA 2.1 specification:
的第23页实体类必须具有无参数构造函数。实体类也可以有其他构造函数。 no-arg构造函数必须是公共的或受保护的。
话虽如此,可能存在一些部分实现JPA的ORM框架忽略了这个功能。
答案 1 :(得分:0)
是的,我尝试使用EclipseLink 2.5.2,即使未提供它,也可以正常工作。