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

Доступ к базе данных весной.

Избавьтесь от сложных sql-запросов в вашем Java-коде. С пометкой java, программирование, учебное пособие, новички.

JPA – это стандарт для ORM. Это уровень API, который сопоставляет объекты Java с таблицами базы данных. Все, что вам нужно, это аннотировать ваш доменный объект с помощью @Entity.

В Spring Boot Spring Data JPA объединяет преимущества Spring Data и JPA.

В мире JDBC нам приходится встраивать sql-запросы в кодовую базу для доступа к базе данных, JPA скрывает всю эту сложность, предоставляя множество методов, связанных с CRUD, через JpaRepository.

Давайте взглянем

Приведенный выше код сопоставляет пользовательский объект с пользовательской таблицей в базе данных. Таблица пользователя состоит из двух столбцов “first_name” и “last_name”. Аннотация @Column определяет столбец внутри пользовательской таблицы.

JPA поддерживает множество аннотаций, например, @Table annotation может определять индексы в таблице. Взгляните на приведенный ниже пример кода.

Выше мы создаем имя индекса “name_index” в столбце first_name.

Уровень доступа к данным без JPA:

JDBC – это основной метод доступа к базе данных. JDBC требует, чтобы кто-то писал sql-запросы для связи с базой данных, Он использует Statement, ResultSet и т.д. Для подготовки sql-инструкции и соответственно извлекает результат из базы данных.

Давайте взглянем ниже -:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT first_name FROM Customers WHERE last_name = 'Doe'");

Здесь мы создаем объект statement и вызываем для него ExecuteQuery с предоставлением SQL-запроса. Объект ResultSet будет содержать весь возвращенный результат запроса. Теперь мы можем использовать итератор для перебора элементов внутри результирующего набора.

Аналогично оператор insert может выглядеть следующим образом.

Statement stmt = connection.createStatement();
stmt.execute("INSERT INTO user (FIRST_NAME,LAST_NAME) VALUES (1,'John','Dow')");

Уровень доступа к данным с помощью JPA

Давайте посмотрим, как JPA выполняет вышеуказанные две операции с базой данных.

Spring Data Jpa предоставляет JpaRepository, который доступен для всех методов CRUD. Как только мы определим репозиторий для объекта домена, мы будем готовы вызвать эти методы.

Давайте создадим интерфейс репозитория для пользователя.

Аннотация @Repository сообщает Spring Boot сканировать интерфейс и делать его доступным при запуске. Вы заметите, что мы не создали никакого метода внутри нашего интерфейса, потому что нам это не нужно, по крайней мере, для простых случаев использования CRUD. Все эти операции поддерживаются JpaRepository из коробки, и мы расширяем его.

Теперь давайте сравним ту же операцию выбора и вставки Jdbc здесь, в Jpa.

Например, выберите, если нам нужно извлечь все объекты мы можем сделать

User user = userRepository.findAll();

Например, вставить, если нам нужно вставить пользователя мы можем сделать

userRepository.save(user);

Намного проще, чем реализация JDBC.

Давайте взглянем на другой пример.

Поиск всех пользователей с заданным именем.

Используйте “findBy” для поиска по определенному столбцу.

// find rows by the first name.
userRepository.findByFirstName(String firstName);

Аналогично,

// find rows by the last name.
userRepository.findByLastName(String lastName);

Я остановлюсь здесь на этом посте. В следующем посте я напишу, как обрабатывать более сложные sql-запросы с помощью JPA.

Если вы предпочитаете пройтись по видеоуроку, у меня есть плейлист Spring Boot на YouTube 👉 Серия учебных пособий по Spring Boot

Я ежедневно публикую посты о программировании на разных платформах с намерением писать хороший технический контент и делать его менее спамным.

Вы также можете найти меня 👇

Youtube | Твиттер | Instagram

Давайте учиться вместе 💪 💪

Счастливого кодирования 💻

Оригинал: “https://dev.to/s_awdesh/database-access-in-spring-384c”