Domanda

Scusa se questa è una domanda molto nooby / stupida, ma mi stavo chiedendo se c'era alcuna differenza, oltre all'implementazione, tra la definizione di una query nel repository:

public interface EmployeeRepository<Employee, Integer> {

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

e definendo una query nell'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;
    //...
}
.

Come ci sono vantaggi / svantaggi a uno?

È stato utile?

Soluzione

In generale, si consiglia di definire le query nell'interfaccia del repository per un motivo molto semplice: è concettualmente più vicino all'esecuzione della query.Inoltre, @Query ha alcune opzioni avanzate quando si tratta di ulteriori query che ad es.bisogno di essere attivato per implementare il paginazione.

Tuttavia, se si desidera riutilizzare la definizione della query su più metodi di query, utilizzando una query denominata è ancora un'opzione ragionevole.

L'aspetto più importante IMO è la coerenza tra la squadra o almeno per repo.Se si avvia con le query denominate, non mescolarli con le definizioni @Query poiché ciò potrebbe confondere gli sviluppatori o almeno renderlo più difficile capire cosa sta succedendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top