spring-by-pivotal

Spring Data JPA est un des projets de Spring qui permet de réduire considérablement le coût économique de la couche d’accès aux données en offrant un certain nombres de facilités dans la mise en place d’un DAO de type CRUD ou encore dans la création de « méthodes requêtes ». Dans ces deux cas, que je vais présenter ici, on va bénéficier de méthodes d’accès aux données sans écrire une seule ligne de code d’implémentation !

Pour commencer voici la dependance Maven à ajouter à votre projet :

<dependency>
	<groupId>org.springframework.data</groupId>
	<artifactId>spring-data-jpa</artifactId>
	<version>1.7.2.RELEASE</version>
</dependency>

Voici donc comment mettre en place très facilement votre couche DAO : il suffit de créer une interface qui étend JpaRepository :

@Entity
@Table("T_USER")
public User {
  
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  Long id;
 
  @Column(name = "FIRSTNAME")
  String firstName;

  @Column(name = "LASTNAME")
  String lastName;
  
  ... 
}

public interface UserDAO extends JpaRepository<User, Long> { }

On aura, de cette manière, accès aux méthodes suivantes sans rien implémenter :

  • save
  • delete
  • findOne (by id)
  • findAll
  • exists
  • count

Pou aller un peu plus loin, le framework permet de  générer des requêtes à partir du nom des méthodes. Voici quelques exemples (liste non-exhaustive) :

// Récupère une liste d'utilisateurs selon 1 critère
List<User> findByLastName(String lastName);

// Récupère une liste d'utilisateurs en fonction d'un modèle
// On peut utiliser Contains, StartingWith, Like...
List<User> findByLastNameLike(String lastName);

// Récupère une liste d'utilisateurs selon 2 critères
// On peut utiliser And et Or
List<User> findByLastNameAndFirstName(String lastName, String firstName);

// Récupère un résultat paginé (contenant des utilisateurs)
Page<User> findByLastName(String lastName, Pageable pageable);

// Récupère une liste triée
// On peut passer par le mot clé Order ou bien utiliser la structure Sort
List<User> findByLastNameOrderByFirstNameAsc(String lastName);
List<User> findByLastName(String lastName, Sort sort);

// Récupère le nombre d'utilisateurs
Long countByLastName(String lastName);

Enfin, pour utiliser ses DAO sans implementation en tant que beans Spring il faut ajouter à votre configuration l’annotation suivante : @EnableJpaRepositories

Pour aller plus loin : https://docs.spring.io/spring-data/jpa/docs/current/reference/html/

Je ne sais pas encore si nous allons l’intégrer à notre projet mais le débat est lancé !

Publicités