Java Persistence API

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

La Java Persistence API (abrégée en JPA), est une interface de programmation Java permettant aux développeurs d'organiser des données relationnelles dans des applications utilisant la plateforme Java.

La Java Persistence API est à l'origine issue du travail du groupe d'experts JSR 220.

La persistance dans ce contexte recouvre 3 zones :

  • l'API elle-même, définie dans le paquetage javax.persistence
  • le langage Java Persistence Query (JPQL)
  • l'objet/les métadonnées relationnelles

Spécificités[modifier | modifier le code]

La Java Persistence API repose essentiellement sur l'utilisation des annotations, introduites dans Java 5. Elles permettent de définir très facilement, et précisément des objets métier, qui pourront servir d'interface entre la base de données et l'application.

Par exemple, cette classe traduit une relation "Compte" dans une base de données SQL :

package org.foo.models.auth;
 
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
 
@Entity
@Table(name = "compte")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Compte.findAll", query = "SELECT a FROM Compte a"),
    @NamedQuery(name = "Compte.findByLogin", query = "SELECT a FROM Compte a WHERE a.login = :login"),
    @NamedQuery(name = "Compte.findByEmail", query = "SELECT a FROM Compte a WHERE a.email = :email")})
public class Compte implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "login")
    private String login;
    @Basic(optional = false)
    @Column(name = "password")
    private String password;
    @Basic(optional = false)
    @Column(name = "email")
    private String email;
 
    @JoinColumn(name = "typeProfil", referencedColumnName = "idProfil")
    @ManyToOne(optional = false)
    private Profil typeProfil;
 
    public Compte() {
    }
 
    public Compte(String login) {
        this.login = login;
    }
 
    public Compte(String login, String password, String email) {
        this.login = login;
        this.password = password;
        this.email = email;
    }
 
    public String getLogin() {
        return login;
    }
 
    public void setLogin(String login) {
        this.login = login;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public String getEmail() {
        return email;
    }
 
    public void setEmail(String email) {
        this.email = email;
    }
 
    public Profil getTypeProfil() {
        return typeProfil;
    }
 
    public void setTypeProfil(Profil typeProfil) {
        this.typeProfil = typeProfil;
    }
 
}


Dans l'application, il devient alors facile d'ajouter, modifier et supprimer des données, en passant par des gestionnaires d'entités, fournis par l'API.

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Références externes[modifier | modifier le code]