Подтвердить что ты не робот

В чем разница между поисковыми методами find... By, read... By, query... By и get... By in spring data?

Я смотрел docs данных spring и не нашел причин использовать методы read...By, get...By вместо find...By (как это обычно делается). Просьба уточнить:

  • Что делают эти методы?
  • или что является целью этих методов?
  • В каких случаях лучше использовать эти методы?
  • В чем разница между ними?

Не могли бы вы написать пример метода query..By?

4b9b3361

Ответ 1

Я не знаю, как насчет других подпроектов, но для Spring данных JPA (1.10.2) эти методы будут работать как псевдонимы. Каждый вызов метода будет генерировать идентичный запрос критериев (и идентичный SQL-запрос).

Внутри не существует никакого различия между этими префиксами. Он использовался только для сопоставления шаблонов запросов:

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

Тот же подход используется для методов remove...By vs delete...By:

private static final String DELETE_PATTERN = "delete|remove";

Ответ 2

Я думаю, что это поможет вам понять..

Разница между этими двумя интерфейсами заключается в семантике их методов. Репозиторий CRUD "находит" что-то, в то время как репозиторий JPA "что-то" получает. Хотя 'find' может вообще не дать результата, 'get' всегда будет что-то возвращать - в противном случае репозиторий JPA выдает исключение.

Источник: https://tuhrig.de/find-vs-get/

Вы можете увидеть этот пост также. https://softwareengineering.stackexchange.com/info/182113/how-and-why-to-decide-between-naming-methods-with-get-and-find-prefixes