2.2 JPA Annotations - dosseggegw1/AMT_projet GitHub Wiki

Pour les classes modèles du code, nous avons utiliser la méthode JPA (Java Persistence API) qui consiste à ajouter des annotations afin de mapper la classe pour le serveur applicatif.

Il existe beaucoup d'annotations différentes (voir liens en bas de la page). Dans ce wiki, nous allons expliquer quelques annotations souvent utilisées dans le cadre de la programmation J2EE.

Exemple d'une classe annotée:

@NamedQueries({
        @NamedQuery(name="selectUserEmail", query = "SELECT emailAddress from User")
})

@Entity
@Table(name = "User")
public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "idUser")
    private int idUser;
    @Column(name = "emailAddress", length=50)
    private String emailAddress;
    @Column(name = "password")
    private String password;
    @Column(name = "firstName", length=50)
    private String firstName;
    @Column(name = "lastName", length=50)
    private String lastName;


    public User() {}
//...
}

Description des annotations:

Annotation Description Exemple
@Entity Précise que la classe actuelle est une entité (le mapping entre le modèle de domaine persistant et une table de la base de données) @Entity(name="User")
@Table Spéicifie la table primaire de la classe annotée @Table(name="User")
@Id Spécifie l'Id de l'entité, toujours obligatoire @Id
@GeneratedValue Spécifie que la valeur l'id de l'entité est automatiquement générée @GeneratedValue(strategy=GenerationType.{AUTO, IDENTITY, SEQUENCE, TABLE})
@Column Spécifie que c'est un attribut de la base de données @Column(name="password", nullable=true, length=50
@NamedQuery Spécifie une requête avec un nom (possibilité de l'appeler dans une autre classe) @NamedQuery(name="selectUserEmail", query = "SELECT emailAddress from User")
@NamedQueries Spécifie plusieurs @NamedQuery @NamedQueries({@NamedQuery(name="selectUserEmail", query = "SELECT emailAddress from User"), @NamedQuery...})
@OneToOne Spécifie une relation d'un-à-un avec une clé étrangère @OneToOne
@JoinColumn(name = "details_id")
private PhoneDetails details;

/!\ Nous vous encourageons vivement à jeter un coup d'oeil sur la doc qui est très complète.

Sources:

⚠️ **GitHub.com Fallback** ⚠️