Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как хранить данные в Azure SQL Database с помощью Spring Data JPA.
Java Persistence API (JPA) — это стандартный API Java для объектно-реляционного отображения.
В этом руководстве мы рассмотрим два метода проверки подлинности: Microsoft Entra аутентификацию и проверку подлинности базы данных SQL. На вкладке "Без пароля" отображается проверка подлинности Microsoft Entra, а на вкладке "Пароль" отображается проверка подлинности базы данных SQL.
Проверка подлинности Microsoft Entra — это метод подключения к базе данных Azure для базы данных SQL с использованием удостоверений, определенных в Microsoft Entra ID. С помощью проверки подлинности Microsoft Entra вы можете управлять удостоверениями пользователей базы данных и другими службами Майкрософт в центральном расположении, что упрощает управление разрешениями.
Проверка подлинности базы данных SQL использует учетные записи, хранящиеся в этой базе данных. Если вы решили использовать пароли в качестве учетных данных для учетных записей, эти учетные данные будут храниться в таблице пользователя. Так как эти пароли хранятся в База данных SQL, вам нужно самостоятельно управлять сменой паролей.
Требования
Подписка Azure — создать бесплатно.
Java комплект средств разработки (JDK) версии 8 или более поздней.
Драйвер ODBC 17 или 18.
Если у вас его нет, создайте экземпляр Azure SQL Server с именем
sqlservertestи базу данных с именемdemo. Инструкции см. в разделе Quickstart: создание одной базы данных — Azure SQL Database.Если у вас нет приложения Spring Boot, создайте проект Maven с помощью Spring Initializr. Обязательно выберите Maven Project и в разделе Dependencies, добавьте Spring Web, Spring Data JPA и MS SQL Server Driver и выберите Java версии 8 или более поздней.
Внимание
Чтобы использовать подключения без пароля, обновите MS SQL Server Driver до версии 12.1.0 или более поздней, а затем создайте пользователя администратора Microsoft Entra для экземпляра сервера Azure SQL Database. Дополнительные сведения см. в разделе Создание администратора Microsoft Entra из Учебник: Защита базы данных в Azure SQL Database.
См. пример приложения
В этом руководстве вы закодируем пример приложения. Если вы хотите быстрее работать, это приложение уже разработано и доступно по адресу https://github.com/Azure-Samples/quickstart-spring-data-jpa-sql-server.
Настройка правила брандмауэра для сервера Azure SQL Database
Azure SQL Database экземпляры защищены по умолчанию. В них включен брандмауэр, который блокирует все входящие подключения.
Чтобы использовать базу данных, откройте брандмауэр сервера, чтобы разрешить локальный IP-адрес для доступа к серверу базы данных. Дополнительные сведения см. в разделе Tutorial: защита базы данных в Azure SQL Database.
Если вы подключаетесь к серверу Azure SQL Database из Windows Subsystem for Linux (WSL) на компьютере Windows, необходимо добавить идентификатор узла WSL в брандмауэр.
Создание пользователя, отличного от администратора базы данных SQL, и предоставление разрешения
На этом шаге будет создан пользователь, отличный от администратора, и предоставят ему все разрешения для demo базы данных.
Сведения об использовании беспарольных подключений см. в статье Tutorial: защита базы данных в Azure SQL Database или используйте соединитель службы для создания пользователя администратора Microsoft Entra для сервера Azure SQL Database, как показано в следующих шагах:
Сначала установите расширение Service Connector без пароля для Azure CLI:
az extension add --name serviceconnector-passwordless --upgradeЗатем используйте следующую команду, чтобы создать пользователя Microsoft Entra не административного.
az connection create sql \ --resource-group <your-resource-group-name> \ --connection sql_conn \ --target-resource-group <your-resource-group-name> \ --server sqlservertest \ --database demo \ --user-account \ --query authInfo.userName \ --output tsv
Созданный администратор Microsoft Entra является пользователем администратора базы данных SQL, поэтому вам не нужно создавать нового пользователя.
Внимание
Подключения к Azure SQL Database без пароля требуют обновления драйвера MS SQL Server до версии 12.1.0 или более поздней. Параметр подключения находится authentication=DefaultAzureCredential в версии 12.1.0 и authentication=ActiveDirectoryDefault в версии 12.2.0.
Хранение данных из Azure SQL Database
С помощью экземпляра Azure SQL Database можно хранить данные с помощью Spring Cloud Azure.
Чтобы установить модуль Spring Cloud Azure Starter, добавьте следующие зависимости в файл pom.xml:
Список компонентов (BOM) Spring Cloud для Azure
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Примечание.
Если вы используете Spring Boot 4.0.x, обязательно установите версию, указанную в
spring-cloud-azure-dependencies, на значение7.1.0.Если вы используете Spring Boot 3.5.x, обязательно задайте версию
spring-cloud-azure-dependenciesна6.2.0.Если вы используете Spring Boot 3.1.x-3.5.x, обязательно установите для нее версию
spring-cloud-azure-dependenciesна5.25.0.Если вы используете Spring Boot 2.x, обязательно установите версию
spring-cloud-azure-dependenciesна4.20.0.Эта ведомость материалов (BOM) должна быть сконфигурирована в
<dependencyManagement>разделе файла pom.xml. Это гарантирует, что все зависимости Spring Cloud Azure используют одну и ту же версию.Дополнительные сведения о версии, используемой для этого BOM, можно найти в разделе Какую версию Spring Cloud Azure мне следует использовать?.
Артефакт Spring Cloud Azure Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>Примечание.
Так как это зависимость, ее следует добавить в
<dependencies>разделе pom.xml. Версия не настроена здесь, так как её управляет добавленный ранее нами BOM.
Настройка Spring Boot для использования Azure SQL Database
Чтобы сохранить данные из Azure SQL Database с помощью Spring Data JPA, выполните следующие действия, чтобы настроить приложение:
Настройте учетные данные Azure SQL Database в файле конфигурации application.properties.
logging.level.org.hibernate.SQL=DEBUG spring.datasource.url=jdbc:sqlserver://sqlservertest.database.windows.net:1433;databaseName=demo;authentication=DefaultAzureCredential; spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2016Dialect spring.jpa.hibernate.ddl-auto=create-dropПредупреждение
Свойство конфигурации
spring.jpa.hibernate.ddl-auto=create-dropозначает, что Spring Boot будет автоматически создавать схему данных при запуске приложения и попытается удалить ее после завершения работы приложения. Эта функция отлично подходит для тестирования, но помните, что данные будут удалены при каждом перезапуске, поэтому его не следует использовать в рабочей среде.
Создайте новый класс
TodoJava. Этот класс представляет собой модель домена, сопоставленную с таблицейtodo, которая будет автоматически создана JPA. Следующий код игнорируетgettersметоды иsettersметоды.package com.example.demo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Todo { public Todo() { } public Todo(String description, String details, boolean done) { this.description = description; this.details = details; this.done = done; } @Id @GeneratedValue private Long id; private String description; private String details; private boolean done; }Измените файл класса запуска, чтобы отобразить следующее содержимое.
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Bean; import org.springframework.data.jpa.repository.JpaRepository; import java.util.stream.Collectors; import java.util.stream.Stream; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Bean ApplicationListener<ApplicationReadyEvent> basicsApplicationListener(TodoRepository repository) { return event->repository .saveAll(Stream.of("A", "B", "C").map(name->new Todo("configuration", "congratulations, you have set up correctly!", true)).collect(Collectors.toList())) .forEach(System.out::println); } } interface TodoRepository extends JpaRepository<Todo, Long> { }Совет
В этом руководстве нет операций проверки подлинности в конфигурациях или коде. Однако для подключения к службам Azure требуется проверка подлинности. Чтобы завершить проверку подлинности, необходимо использовать удостоверение Azure. Spring Cloud Azure использует
DefaultAzureCredential, который предоставляет библиотека идентификации Azure, чтобы помочь вам получить учетные данные без каких-либо изменений кода.DefaultAzureCredentialподдерживает несколько методов проверки подлинности и определяет, какой метод следует использовать во время выполнения. Этот подход позволяет приложению использовать различные методы проверки подлинности в разных средах (например, локальных и рабочих средах), не реализуя код, зависящий от среды. Дополнительные сведения см. в разделе DefaultAzureCredential.Для выполнения проверки подлинности в локальных средах разработки можно использовать Azure CLI, Visual Studio Code, PowerShell или другие методы. Дополнительные сведения см. в разделе Аутентификация Azure в средах разработки на Java. Чтобы завершить проверку подлинности в средах размещения Azure, рекомендуется использовать управляемое удостоверение, назначаемое пользователем. Дополнительные сведения см. в разделе Управляемые удостоверения для ресурсов Azure.
Запустите приложение. Вы увидите журналы, аналогичные следующему примеру:
2023-02-01 10:29:19.763 DEBUG 4392 --- [main] org.hibernate.SQL : insert into todo (description, details, done, id) values (?, ?, ?, ?) com.example.demo.Todo@1f
Развертывание в Azure Spring Apps
Теперь, когда у вас есть приложение Spring Boot, работающее локально, пришло время переместить его в рабочую среду. Azure Spring Apps упрощает развертывание приложений Spring Boot для Azure без каких-либо изменений кода. Эта служба управляет инфраструктурой приложений Spring, благодаря чему разработчики могут сосредоточиться на коде. Azure Spring Apps обеспечивает управление жизненным циклом с помощью комплексного мониторинга и диагностики, управления конфигурацией, обнаружения служб, интеграции CI/CD, развертывания по схеме blue-green и многого другого. Чтобы развернуть ваше приложение в Azure Spring Apps, см. статью Развертывание первого приложения в Azure Spring Apps.