Skip to content

Modèles

Bases

Un modèle est un POJO à qui on met l'attribut @Entity.

1
2
3
4
@Entity
public class MyEntity {
    // ...
}

Pour définir un ID clé-primaire, on utilise @Id. Pour l'auto-incrémenter, on utilise @GeneratedValue(strategy = GenerationType.AUTO)

1
2
3
4
5
6
@Entity
public class MyEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
}

On a besoin d'un constructeur vide explicite, et de getters/setters pour chaque champ, ainsi que de la méthode equals et hashCode basée sur id.

Relations

One to One

Mettons une classe Paper et une classe Author.

Un Paper a un Author, et on ignore tous les autres use cases ici (Author ayant plusieurs Paper, par exemple).

On a donc Paper(#author_id => Author(id)).

Pour composer une telle relation, on utilise @OneToOne sur l'entité propriétaire. Ici, Paper est "propriétaire" de Author.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
@Entity
public class Author {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;

    public Author() {}
    public Author(String name) { this.name = name; }
    // getters, setters, etc.
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
@Entity
public class Paper {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String title;
    // ...

    public Paper() {}
    public Paper(String title) { this.title = title; }
    // getters, setters, etc.

    // OneToOne relationship where Paper owns Author
    @OneToOne
    private Author author;
}

Il n'y a rien d'autre à effectuer pour déclarer une 1-1 de base.