2016-10-05 14 views
7

Tôi đang xem docs dữ liệu mùa xuân và không tìm thấy lý do để sử dụng các phương pháp read...By, get...By thay vì find...By (như thường được thực hiện). Vui lòng làm rõ:Sự khác nhau giữa các phương thức truy vấn tìm kiếm là gì? Bởi, đọc… Bởi, truy vấn… Bởi, và nhận được… Vào mùa xuân dữ liệu?

  • phương pháp này làm gì?
  • hoặc mục đích của phương pháp này là gì?
  • Trong trường hợp nào tốt hơn nên sử dụng phương pháp này?
  • sự khác nhau giữa chúng là gì?

Bạn có thể viết ví dụ về phương thức query..By không?

+1

Không có sự khác biệt giữa bốn cách tiếp cận này. Chúng đã được cung cấp như là các tùy chọn cho phù hợp với sở thích cá nhân vì các nhà phát triển khác nhau có thể có các sở thích khác nhau về cách họ muốn đặt tên cho các phương thức accessor của họ. 'Foo findByName (Tên chuỗi)', 'Foo getByName (Tên chuỗi)', 'Foo queryByName (Tên chuỗi)' và 'Foo readByName (Tên chuỗi)' là tất cả tương đương - chúng sẽ tìm thấy một 'Foo' với một tên phù hợp giá trị được chuyển thành tham số 'name'. – manish

Trả lời

9

Tôi không biết làm thế nào về các tiểu dự án khác, nhưng đối với dữ liệu Spring JPA (1.10.2), các phương thức này sẽ hoạt động như bí danh. Mỗi lời gọi phương thức sẽ tạo ra truy vấn tiêu chí giống hệt nhau (và truy vấn SQL giống hệt nhau).

Nội bộ không có sự phân biệt giữa các tiền tố này. Nó được sử dụng chỉ cho phù hợp với mô hình truy vấn:

private static final String QUERY_PATTERN = "find|read|get|query|stream"; 

https://github.com/spring-projects/spring-data-commons/blob/8bc022ebd7097b921ae1ef6c87f0ae9fc05bba5f/src/main/java/org/springframework/data/repository/query/parser/PartTree.java#L54

Các phương pháp tương tự được sử dụng cho remove...By vs delete...By phương pháp:

private static final String DELETE_PATTERN = "delete|remove"; 
Các vấn đề liên quan