리포지토리 인터페이스 또는 엔티티 클래스의 쿼리 정의의 차이점은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/25012051

문제

죄송합니다. 이것이 매우 nooby / 멍청한 질문이라면, 그러나 구현 외에도, 쿼리를 정의하는 것 사이에 차이가 있는지 궁금해하고있었습니다.

public interface EmployeeRepository<Employee, Integer> {

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

엔티티에서 쿼리 정의 :

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

는 하나의 장점 / 단점이 있습니까?

도움이 되었습니까?

해결책

일반적으로 매우 간단한 이유로 리포지토리 인터페이스에서 쿼리를 정의하는 것이 좋습니다. 개념적으로 쿼리 실행에 더 가깝습니다.또한 @Query는 추가 쿼리에 대한 추가 쿼리가 발생할 때 몇 가지 고급 옵션이 있습니다.페이지 매기기를 구현하기 위해 트리거해야합니다.

그러나 여러 쿼리 메소드에서 쿼리 정의를 다시 사용하려면 이름이 지정된 쿼리를 사용하여 여전히 합리적인 옵션입니다.

가장 중요한 측면 IMO는 팀 중 하나 또는 적어도 repo 당 일관성이 있습니다.이름이 지정된 쿼리로 시작하면 개발자를 혼동하거나 적어도 무슨 일이 일어나는지 이해하기가 더 어려워 지도록 @Query 정의로 만 섞지 마십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top