English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring Data - это проект высокого уровня Spring Source. Цель - унифицировать и упростить доступ к различным типам хранилищ persistence, таким как реляционные базы данных и NoSQL.
При реализации нового приложения我们应该 сосредоточиться на бизнес-логике, а не на технической сложности и样板ном коде. Вот почему спецификация Java Persistence API (JPA) и Spring Data JPA так популярны.
Spring Data JPA добавляет слой над JPA. Это означает, что Spring Data JPA использует все функции, определенные спецификацией JPA, особенно сущности, ассоциативные карты и функции запросов JPA. Spring Data JPA добавляет свои собственные функции, такие как безкодовая реализация шаблона хранилища и создание базовых данных запросов на основе имени метода.
Spring Data JPA обрабатывает большинство сложностей доступа к базе данных на основе JDBC и ORM (объектно-реляционная карта) и уменьшает количество样板ного кода, необходимого для JPA.
Spring Data JPA предназначен для улучшения реализации слоя доступа к данным за счет уменьшения объема работы.
Spring Data JPA имеет триОсновные функции, как показано ниже:
База данных без кода: Это наиболее популярный шаблон, связанный с持久ностью. Он позволяет нам реализовывать бизнес-код на более высоком уровне абстракции. Упрощенный шаблон кода: Она предоставляет по умолчанию реализацию для каждого метода через его интерфейс хранилища. Это означает, что больше не нужно реализовывать операции чтения и записи. Генерированные запросы: Одна из функций Spring Data JPA - это генерация запросов на основе имени методаГенерация базы данных запросов. Если запрос не слишком сложный,则需要 в интерфейсе хранилища определить один с findBy Методы, начинающиеся с названия. Определив метод, Spring анализирует имя метода и создает для него запрос. Например:
public interface EmployeeRepository extends CrudRepository<Employee, Long> { Employee findByName(String name); }
В примере выше мы расширили использование двух генериков CrudRepository : Employee 和 Long . Employee нужно управлять сущностьа Long Это тип данных для ключа PRIMARY
Внутри Spring генерируется JPQL (Java持久ность запросов) По имени метода. Запрос выводится из подписи метода. Он устанавливает значения привязанных параметров, выполняет запрос и возвращает результат.
Есть и другие функции, такие как показано ниже:
Оно может интегрировать пользовательский код репозитория. Это мощный репозиторий и абстракция для пользовательских маппингов объектов. Оно поддерживает прозрачный аудит. Оно реализует базовый класс области, предоставляющий основные атрибуты. Оно поддерживает несколько модулей, таких как Spring Data JPA, Spring Data MongoDB, Spring Data REST, Spring Data Cassandra и т.д.
Spring Data JPA предоставляет трирепозитории, как показано ниже:
CrudRepository: : Оно предоставляет стандартныесоздание, чтение, обновление和удаление. Оно включает такие функции, как findOne(), findAll(), save(), delete(),и т.д. PagingAndSortingRepository : Оно расширяет CrudRepository и добавляет метод findAll. Это позволяет нам получить данные с помощью pagination.сортировка和получениеданные. JpaRepository : Это специализированные репозитории JPAв Spring Data Jpa определено. Оно расширяет репозитории CrudRepository и PagingAndSortingRepository. Оно добавляет специфические для JPA методы, такие как flush()чтобы вызвать обновление в контексте持久ности.
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>2.2.3.RELEASE</version> </dependency>
Spring Boot предоставляет spring-boot-starter-data-jpa Зависимости, чтобы эффективно соединить Spring приложение с реляционной базой данных. spring-boot-starter-data-jpa использует внутреннюю зависимость spring-boot-jpa (с версии Spring Boot 1.5.3).
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.2.2.RELEASE</version> </dependency>
База данных спроектирована с использованием таблиц/отношений. Ранние методы (JDBC) включали написание SQL-запросов. В JPA мы будем хранить данные из объектов в таблицы и наоборот. Но JPA эволюционировал из-за различного процесса мышления.
До JPA термин ORM был более часто используем для обозначения таких фреймворков. Поэтому Hibernate называют ORM-фреймворком.
JPA позволяет нам маппить классы приложений к таблицам в базе данных.
Менеджер сущностей: : После определения карты он будет обрабатывать все взаимодействия с базой данных. JPQL (Java Persistence Query Language): Предоставляет метод для написания запросов для выполнения поиска на сущностях. Это отличается от SQL-запросов. Запросы JPQL уже знают о картах, определяемых между сущностями. Если необходимо, мы можем добавить другие условия. Стандартный API : Определяет API на основе Java для выполнения поиска в базе данных.
Hibernate является реализацией JPA. Это самый популярный ORM-фреймворк, а JPA - это API, определяющий стандарт. Hibernate понимает карту, которую мы добавляем между объектами и таблицами. Он обеспечивает retrieval/хранение данных из базы данных на основе этой карты. Он также предоставляет другие функции на вершине JPA.
В этом примере мы будем использовать зависимость spring-boot-starter-data- jpa для создания подключения к базе данных H2.
Шаг 1: Откройте spring Initializr https://start.spring.io/
Шаг 2: предоставляет группаимя. Мы предоставили com.w3codebox 。
Шаг 3: предоставляет артifact ID. Мы предоставили spring-boot-jpa-example.
Шаг 4: добавить зависимости: Spring Web, Spring Data JPA,和 база данных H2.
Шаг 5: нажмите Созданиекнопка. Когда мы нажимаем кнопку "Создать", она упаковывает проект в Jar файл и сохраните его на локальной системе.
Шаг 6: Извлеките Jar файл и вставьте его в рабочую зону STS.
Шаг 7: ПеретащитеИмпортируйте папку проекта в STS.
Файл->Импорт->Существующий проект Maven->Перейти->Выберите папку spring-boot-jpa-example->Готово
импорт может занять некоторое время.
Шаг 8: Создайте папку с именем com.w3codebox.controller пакет в шаге src/main/java в папке.
Шаг 9: в консоли создать файл с именем ControllerDemo класс Controller. Пакет com.w3codebox.controller 。
ControllerDemo.java
package com.w3codebox.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ControllerDemo { @RequestMapping("/") public String home() { return "home.jsp"; } }
Шаг 10: в папке в папке src/main/java создать еще один файл с именем com.w3codebox.model пакета.
User. Java
package com.w3codebox.model; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="userdata") public class User { @Id private int id; private String username; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUname() { return username; } public void setUname(String username) { this.username = username; } @Override public String toString() { return "Пользователь [id=" + id + ", uname=" + username + "]"; } }
现在,我们需要配置H2数据库。
步骤12: 打开 application.properties 文件并配置以下内容: 端口,启用H2控制台,数据源,和 URL。
application.properties
server.port=8085 spring.h2.console.enabled=true spring.datasource.platform=h2 spring.datasource.url=jdbc:h2:mem:w3codebox
步骤13: : 在文件夹 src/main/resources中创建一个 SQL 文件。
右键单击文件夹src/main/resources->新建->文件->提供 文件名->完成
我们提供了文件名 data.sql ,并将以下数据插入其中。
data.sql
insert into userdata values(101,'Tom'); insert into userdata values(102,'Andrew'); insert into userdata values(103,'Tony'); insert into userdata values(104,'Bob'); insert into userdata values(105,'Sam');
步骤14: : 在 src 文件夹中创建一个名称为 webapp 的文件夹。
步骤15: 使用我们在 ControllerDemo 中返回的名称创建一个JSP文件。在ControllerDemo.java中,我们返回了 home.jsp 。
home.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"%> pageEncoding="ISO-8859-1"> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <form action="addUser"> ID :<br/> <input type="text" name="t1"><br/> Имя пользователя:<br/> <input type="text" name="t2"><br/> <input type="submit" value="Add"> </form> </body> </html>
Шаг 16: запуск SpringBootJpaExampleApplication.java файл. Мы можем видеть в консоли, что наше приложение запущено на порту 8085 успешно запущен.
Шаг 17: Откройте браузер и вызовите URL http://localhost: 8085/h2-console/. Она показывает класс драйвера, который мы application.properties JDBC URL, настроенного в файле, и mặc địnhного пользователя sa.
Мы также можем нажать Тестирование подключения кнопку для тестирования подключения. Если подключение успешное, то отображается сообщение "Успешно протестировано".
Шаг 18: нажмите Connect (соединение) кнопка. Она показывает, что мы User.java в definied в таблице userdata.
Шаг 19: Выполните следующие запросы, чтобы увидеть структуру таблицы userdata, определенной в data.sql Данные в файле.
SELECT * FROM USERDATA;