Рубрики
Без рубрики

Весенний JPA: Под одеялом

Spring Data JPA В первые дни слой DAO состоял или все еще состоит из большого количества b… С тегами java, springboot2, spring data jpa, database.

Под одеялом Spring Data JPA, часть spring-data framework, помогает сократить этот шаблонный код и позволяет разработчику легко сосредоточиться на том, что действительно важно.

Сокращенный шаблон означает сокращение кода и артефактов для определения и обслуживания. Spring JPA переводит это на другой уровень, где вы можете заменить уровень DAO конфигурацией в файле свойств. Уровень абстракций, предоставляемый JPA, помогает разработчику поддерживать только артефакт интерфейса.

Чтобы начать работать с Spring JPA, интерфейс DAO должен расширять JpaRepository. Просто расширяя этот интерфейс, разработчик имеет множество методов, уже реализованных и готовых к использованию.

public interface FooRepository extends JpaRepository { 
}

Но как работает Spring JPA!

Есть много способов, которыми вы можете использовать возможности Spring JPA, мы обсудим создание запросов здесь.

Существует два способа реализации создания запроса:
  1. Автоматические Пользовательские Запросы
  2. Ручные Пользовательские Запросы

1. Автоматические Пользовательские Запросы:

Когда мы расширяем JpaRepository, Spring сканирует каждый метод в интерфейсе и пытается проанализировать его для генерации запросов. Он удаляет префиксы, такие как find… По , читать… На , количество… С помощью , запроса… По , получаем… By , из метода, и начинает разбор остальной его части.

public interface FooRepository extends JpaRepository { 

    public Optional findByName(String name); 

}

Первый ‘By’ действует как разделитель, указывающий начало запроса. Мы можем добавить условия к свойствам сущности и объединить их с помощью ‘И’ или ‘Или’ . мы также можем добавить предложение Distinct, чтобы установить флаг distinct.

public interface FooRepository extends JpaRepository { 

    public Optional findByFirstnameAndLastname(String firstname, String lastname); 

    public List findByFirstnameOrLastname(String firstname, String lastname);

    public List findDistinctByLastname(String lastname);
}

” Выражения обычно представляют собой обход свойств в сочетании с операторами, которые могут быть объединены. Мы можем комбинировать выражение свойств с ‘И’ и ‘Или’. Существуют и другие операторы, такие как “Между”, “Меньше”, “Больше”, “Нравится” для выражения свойства.”:- Весенние документы

Приведенная выше строка идеально определяет автоматическое создание запроса.

Выражение свойства

Выражение свойства может ссылаться только на прямое свойство управляемого объекта. Во время создания запроса вы уже убедитесь, что анализируемое свойство является свойством класса управляемого домена

2. Ручные пользовательские запросы

Если мы все еще хотим написать какой-либо пользовательский запрос для уточнения нашего результата и получения желаемого набора записей, что невозможно сделать с помощью автоматического создания запроса, мы можем свободно писать пользовательские запросы JPQL.

Мы можем определить пользовательские запросы, используя аннотацию @Query .

public interface FooRepository extends JpaRepository { 

    @Query("SELECT f FROM Foo f WHERE LOWER(f.name) = LOWER(:name)")
    Foo retrieveByName(@Param("name") String name);

}

Как только мы используем аннотацию @Query , имя метода не имеет значения, поскольку имя метода не будет проанализировано.

Как только мы используем аннотацию || @Query ||, имя метода не имеет || значения, поскольку имя метода не будет проанализировано. Вывод

Как только мы используем аннотацию || @Query ||, имя метода не имеет || значения, поскольку имя метода не будет проанализировано. Заключение Благодаря команде Spring Data JPA мы можем легко внедрить уровень DAO и сосредоточиться на том, что важно. Как только мы используем аннотацию || @Query ||, имя метода не имеет || значения, поскольку имя метода не будет проанализировано. Заключение Благодаря команде Spring Data JPA мы можем реализовать DAO layeThis блог – это всего лишь суть того, что может предложить Spring Data JPA, мы можем сделать гораздо больше с помощью реализации JPA без особых усилий и сосредоточиться на том, что важно.

Оригинал: “https://dev.to/ashwani1218/spring-jpa-under-the-covers-11hi”