Est-ce que les Java Record peuvent être utilisés pour représenter des entités JPA ?
La question est de savoir si nous pouvons simplifier la construction des entités JPA en utilisant des Java Records
Caractéristiques Java Records
Depuis le JDK 14, nous pouvons remplacer nos classes de données par des enregistrements. Les enregistrements sont des classes immuables qui ne nécessitent que le type et le nom des attributs.
L’immutabilité garantit l'intégrité des données
Un record :
c'est une classe final qui ne peut donc pas être enrichie par héritage d'un autre record ou d'une autre classe
où chaque attribut est encapsulé dans un champ private et final pour garantir l'immutabilité
avec un constructeur public avec l’ensemble des attributs
et un getter pour chaque attribut (mais pas de setter)
Caractéristiques JPA
Une entité JPA est, par définition, une classe Java qui doit avoir les propriétés suivantes :
Elle doit posséder un constructeur vide public ou protected
Elle ne doit pas être final, et aucune de ses méthodes ne peut être final.
Ses attributs ne peuvent pas être final
Une entité JPA demande donc un constructeur vide et la possibilité d’être modifiable
Ainsi, selon les spécifications JPA, un enregistrement Java ne peut pas être utilisé comme entité.