Pregunta

Lo siento si esta es una pregunta muy nooby / estúpida, pero me preguntaba si había alguna diferencia, además de la implementación, entre la definición de una consulta en el repositorio:

public interface EmployeeRepository<Employee, Integer> {

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

y definiendo una consulta en la entidad:

@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;
    //...
}

¿A diferencia de las ventajas / desventajas para uno?

¿Fue útil?

Solución

En términos generales, recomendamos definir las consultas en la interfaz del repositorio por una razón muy simple: está conceptualmente más cerca de la ejecución de la consulta.Además, @Query tiene algunas opciones avanzadas cuando se trata de las consultas adicionales que, por ejemplo,.necesita ser activado para implementar la paginación.

Sin embargo, si desea reutilizar la definición de consulta en múltiples métodos de consulta, el uso de una consulta con nombre sigue siendo una opción razonable.

El aspecto más importante IMO es la consistencia entre el equipo o al menos por repo.Si comienza con las consultas nombradas, no los mezcle con las definiciones de generación @Query, ya que podrían confundir a los desarrolladores o, al menos, dificultar lo que está pasando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top