الفرق بين تعريف الاستعلامات في واجهة المستودع أو فئة الكيان?

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

سؤال

آسف إذا كان هذا هو سؤال نوبي / غبي جدا ، ولكن كنت أتساءل عما إذا كان هناك أي فرق ، إلى جانب التنفيذ ، بين تحديد استعلام في المستودع:

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 لديه عدد قليل من الخيارات المتقدمة عندما يتعلق الأمر الاستعلامات الإضافية التي على سبيل المثال.تحتاج إلى تشغيل لتنفيذ ترقيم الصفحات.

ومع ذلك ، إذا كنت ترغب في إعادة استخدام تعريف الاستعلام على طرق استعلام متعددة ، فإن استخدام استعلام مسمى لا يزال خيارا معقولا.

أهم جانب للمنظمة البحرية الدولية هو الاتساق إما بين الفريق أو على الأقل لكل الريبو.إذا كنت تبدأ مع الاستعلامات المسماة ، لا مزجها مع @Query قد تؤدي التعريفات إلى إرباك المطورين أو على الأقل تجعل من الصعب فهم ما يحدث.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top