Question

Désolé, s'il s'agit d'une question très noobée / stupide, mais je me demandais s'il y avait une différence, outre la mise en œuvre, entre définir une requête dans le référentiel:

public interface EmployeeRepository<Employee, Integer> {

    @Query("select e from Employee e where e.name like :name")
    public List<Employee> findByName(@Param("name") String name);
}

et définir une requête dans l'entité:

@Entity
@NamedQuery(name="Employee.findByName", query="select e from Employee e where e.name like :name")
public class Employee {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    //...
}

Comme Y a-t-il des avantages / inconvénients de l'un ou l'autre?

Était-ce utile?

La solution

En règle générale, nous vous recommandons de définir les questions à l'interface du référentiel pour une raison très simple: elle est conceptuellement plus près de l'exécution de la requête.De plus, @Query a quelques options avancées en ce qui concerne les requêtes supplémentaires que par ex.doivent être déclenchés pour mettre en œuvre la pagination.

Toutefois, si vous souhaitez réutiliser la définition de la requête sur plusieurs méthodes de requête, à l'aide d'une requête nommée est encore une option raisonnable.

L'aspect le plus important de l'OMI est la cohérence de l'équipe ou du moins par repo.Si vous commencez par des requêtes nommées, ne les mélangez pas avec des définitions @Query comme cela pourrait confondre des développeurs ou du moins rendre plus difficile de comprendre ce qui se passe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top