Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce tutoriel montre comment stocker des données dans Azure SQL Database à l’aide de Spring Data JDBC.
JDBC est l’API Java standard pour se connecter aux bases de données relationnelles traditionnelles.
Dans ce tutoriel, nous incluons deux méthodes d’authentification : l’authentification Microsoft Entra et l’authentification SQL Database. L’onglet Sans mot de passe affiche l’authentification Microsoft Entra et l’onglet Mot de passe affiche l’authentification SQL Database.
L’authentification Microsoft Entra est un mécanisme de connexion à Azure SQL Database en utilisant des identités définies dans Microsoft Entra ID. Avec l’authentification Microsoft Entra, vous pouvez gérer les identités utilisateur de base de données et d’autres services Microsoft dans un emplacement central, ce qui simplifie la gestion des autorisations.
L'authentification de la base de données SQL utilise des comptes stockés dans la base de données SQL. Si vous choisissez d'utiliser des mots de passe comme identifiants pour les comptes, ces identifiants seront stockés dans la table des utilisateurs. Comme ces mots de passe sont stockés dans la base de données SQL, vous devez gérer vous-même la rotation des mots de passe.
Prérequis
Un abonnement Azure - créez-en un gratuitement.
Java Kit de développement (JDK), version 8 ou ultérieure.
Pilote ODBC 17 ou 18.
Si vous n'en avez pas, créez une instance Azure SQL Server nommée
sqlservertestet une base de données nomméedemo. Pour obtenir des instructions, consultez Quickstart : Créer une base de données unique - Azure SQL Database.Si vous n'avez pas d'application Spring Boot, créez un projet Maven avec Spring Initializr. Veillez à sélectionner Maven Project et, sous Dependencies, ajoutez les dépendances Spring Web, Spring Data JDBC et MS SQL Server Driver, puis sélectionnez Java version 8 ou ultérieure.
Voir l'exemple d'application
Dans ce tutoriel, vous allez coder un exemple d'application. Si vous souhaitez aller plus rapidement, cette application est déjà codée et disponible à https://github.com/Azure-Samples/quickstart-spring-data-jdbc-sql-server.
Configurer une règle de pare-feu pour votre serveur Azure SQL Database
Azure SQL Database instances sont sécurisées par défaut. Elles ont un pare-feu qui n’autorise aucune connexion entrante.
Pour pouvoir utiliser votre base de données, ouvrez le pare-feu du serveur afin d'autoriser l'adresse IP locale à accéder au serveur de base de données. Pour plus d’informations, consultez Tutorial : Sécuriser une base de données dans Azure SQL Database.
Si vous vous connectez à votre serveur Azure SQL Database à partir de Windows Subsystem for Linux (WSL) sur un ordinateur Windows, vous devez ajouter l'ID d'hôte WSL à votre pare-feu.
Créez un utilisateur non administrateur de la base de données SQL et accordez-lui des permissions.
Cette étape permet de créer un utilisateur non administrateur et de lui accorder toutes les permissions sur la base de données demo.
Pour utiliser des connexions sans mot de passe, consultez Tutorial : Sécuriser une base de données dans Azure SQL Database ou utiliser Service Connector pour créer un utilisateur administrateur Microsoft Entra pour votre serveur Azure SQL Database, comme indiqué dans les étapes suivantes :
Tout d’abord, installez le connecteur Service sans mot de passe pour la Azure CLI :
az extension add --name serviceconnector-passwordless --upgradeUtilisez ensuite la commande suivante pour créer l’utilisateur non administrateur 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
L'administrateur Microsoft Entra que vous avez créé est un utilisateur administrateur de base de données SQL. Vous n'avez donc pas besoin de créer un utilisateur.
Importante
Les connexions sans mot de passe de la base de données Azure SQL nécessitent la mise à niveau du MS SQL Server Driver vers la version 12.1.0 ou ultérieure. L'option de connexion est authentication=DefaultAzureCredential dans la version 12.1.0 et authentication=ActiveDirectoryDefault dans la version 12.2.0.
Stocker des données à partir de Azure SQL Database
Avec une instance Azure SQL Database, vous pouvez stocker des données à l’aide de Spring Cloud Azure.
Pour installer le module Spring Cloud Azure Starter, ajoutez les dépendances suivantes à votre fichier pom.xml :
Le Bill of Materials (BOM) de 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>Remarque
Si vous utilisez Spring Boot 4.0.x, veillez à mettre la
spring-cloud-azure-dependenciesversion à7.1.0.Si vous utilisez Spring Boot 3.5.x, assurez-vous de définir la version
spring-cloud-azure-dependenciesà6.1.0.Si vous utilisez Spring Boot 3.1.x-3.5.x, veillez à définir la version
spring-cloud-azure-dependencies5.25.0.Si vous utilisez Spring Boot 2.x, assurez-vous de définir la version
spring-cloud-azure-dependenciessur4.20.0.Cette liste de matériel (BOM) doit être configurée dans la section
<dependencyManagement>de votre fichier pom.xml. Cela garantit que toutes les dépendances spring Cloud Azure utilisent la même version.Pour plus d’informations sur la version utilisée pour ce boM, consultez Which Version of Spring Cloud Azure Should I Use.
L'artefact Starter de Spring Cloud Azure
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>Remarque
Comme il s’agit d’une dépendance, elle doit être ajoutée dans la
<dependencies>section de la pom.xml. Sa version n'est pas configurée ici, car elle est gérée par le BOM que nous avons ajouté précédemment.
Configurer Spring Boot pour utiliser Azure SQL Database
Pour stocker des données à partir de Azure SQL Database à l’aide de Spring Data JDBC, procédez comme suit pour configurer l’application :
Configurez des informations d’identification Azure SQL Database dans le fichier de configuration application.properties.
logging.level.org.springframework.jdbc.core=DEBUG spring.datasource.url=jdbc:sqlserver://sqlservertest.database.windows.net:1433;databaseName=demo;authentication=DefaultAzureCredential; spring.sql.init.mode=alwaysAvertissement
La propriété de configuration
spring.sql.init.mode=alwayssignifie que Spring Boot générera automatiquement un schéma de base de données, à l'aide du fichier schema.sql que vous créerez ensuite, à chaque démarrage du serveur. C’est très utile pour les tests, mais n’oubliez pas que cela supprimera vos données à chaque redémarrage. Par conséquent, ne l’utilisez pas en production.
Créez le fichier de configuration src/main/resources/schema.sql pour configurer le schéma de la base de données, puis ajoutez le contenu suivant.
DROP TABLE IF EXISTS todo; CREATE TABLE todo (id INT IDENTITY PRIMARY KEY, description VARCHAR(255), details VARCHAR(4096), done BIT);
Créez une classe
TodoJava. Cette classe est un modèle de domaine mappé sur la tabletodoqui sera créée automatiquement par Spring Boot. Le code suivant ignore les méthodesgettersetsetters.import org.springframework.data.annotation.Id; public class Todo { public Todo() { } public Todo(String description, String details, boolean done) { this.description = description; this.details = details; this.done = done; } @Id private Long id; private String description; private String details; private boolean done; }Modifiez le fichier de classe de démarrage pour afficher le contenu suivant.
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.repository.CrudRepository; 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)).toList()) .forEach(System.out::println); } } interface TodoRepository extends CrudRepository<Todo, Long> { }Conseil
Dans ce tutoriel, il n'y a pas d'opérations d'authentification dans les configurations ou le code. Toutefois, la connexion à Azure services nécessite une authentification. Pour terminer l’authentification, vous devez utiliser Azure Identity. Spring Cloud Azure utilise
DefaultAzureCredential, que la bibliothèque Azure Identity fournit pour vous aider à obtenir des informations d’identification sans aucune modification du code.DefaultAzureCredentialprend en charge plusieurs méthodes d’authentification et détermine quelle méthode doit être utilisée au moment de l’exécution. Cette approche permet à votre application d'utiliser différentes méthodes d'authentification dans différents environnements (tels que les environnements locaux et de production) sans implémenter de code spécifique à l'environnement. Pour plus d’informations, consultez DefaultAzureCredential.Pour terminer l’authentification dans les environnements de développement locaux, vous pouvez utiliser Azure CLI, Visual Studio Code, PowerShell ou d’autres méthodes. Pour plus d’informations, consultez l'authentification Azure dans les environnements de développement Java. Pour terminer l’authentification dans Azure environnements d’hébergement, nous vous recommandons d’utiliser l’identité managée affectée par l’utilisateur. Pour plus d’informations, consultez Qu’est-ce que les identités managées pour les ressources Azure ?
Lancez l’application. L'application stocke les données dans la base de données. Vous verrez des logs similaires à l'exemple suivant :
2023-02-01 10:22:36.701 DEBUG 7948 --- [main] o.s.jdbc.core.JdbcTemplate : Executing prepared SQL statement [INSERT INTO todo (description, details, done) VALUES (?, ?, ?)] com.example.demo.Todo@4bdb04c8
Déployer sur Azure Spring Apps
Maintenant que l'application Spring Boot fonctionne localement, il est temps de la mettre en production. Azure Spring Apps facilite le déploiement d’applications Spring Boot sur Azure sans aucune modification du code. Le service gère l’infrastructure des applications Spring, ce qui permet aux développeurs de se concentrer sur leur code. Azure Spring Apps fournit une gestion du cycle de vie à l’aide de la supervision et des diagnostics complets, de la gestion de la configuration, de la découverte de services, de l’intégration CI/CD, des déploiements bleu-vert, etc. Pour déployer votre application sur Azure Spring Apps, consultez Deploy your first application to Azure Spring Apps.