Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie ziet u hoe u gegevens opslaat in Azure SQL Database met behulp van Spring Data JDBC.
JDBC is de standaard-API Java om verbinding te maken met traditionele relationele databases.
In deze handleiding bevatten we twee verificatiemethoden: Microsoft Entra-verificatie en SQL Database-verificatie. Op het tabblad Wachtwoordloos ziet u de Microsoft Entra verificatie en op het tabblad Wachtwoord wordt de SQL Database-verificatie weergegeven.
Microsoft Entra verificatie is een mechanisme voor het maken van verbinding met Azure Database for SQL Database met behulp van identiteiten die zijn gedefinieerd in Microsoft Entra ID. Met Microsoft Entra-verificatie kunt u databasegebruikersidentiteiten en andere Microsoft-services beheren op een centrale locatie, wat het beheer van machtigingen vereenvoudigt.
SQL Database-verificatie maakt gebruik van accounts die zijn opgeslagen in SQL Database. Als u ervoor kiest om wachtwoorden als referenties voor de accounts te gebruiken, worden deze referenties opgeslagen in de gebruikerstabel. Omdat deze wachtwoorden zijn opgeslagen in SQL Database, moet u de rotatie van de wachtwoorden zelf beheren.
Vereisten
Een Azure-abonnement- gratis een abonnement maken.
Java Development Kit (JDK), versie 8 of hoger.
ODBC-stuurprogramma 17 of 18.
Als u nog geen exemplaar hebt, maakt u een Azure SQL Server-exemplaar met de naam
sqlservertesten een database met de naamdemo. Zie Quickstart: Een individuele database maken - Azure SQL Database voor instructies.Als u geen Spring Boot-toepassing hebt, maakt u een Maven-project met de Spring Initializr. Selecteer Maven Project en selecteer onder Afhankelijkheden, voeg de Spring Web, Spring Data JDBC en MS SQL Server Stuurprogramma toe en selecteer Java versie 8 of hoger.
Bekijk de voorbeeldtoepassing
In deze zelfstudie codeert u een voorbeeldtoepassing. Als u sneller wilt gaan, is deze toepassing al gecodeerd en beschikbaar op https://github.com/Azure-Samples/quickstart-spring-data-jdbc-sql-server.
Een firewallregel configureren voor uw Azure SQL Database-server
Azure SQL Database exemplaren zijn standaard beveiligd. Ze hebben een firewall die geen enkele binnenkomende verbinding toestaat.
Als u de database wilt kunnen gebruiken, opent u de firewall van de server om het lokale IP-adres toegang te geven tot de databaseserver. Zie Tutorial: Een database beveiligen in Azure SQL Database voor meer informatie.
Als u verbinding maakt met uw Azure SQL Database-server vanaf Windows Subsystem for Linux (WSL) op een Windows computer, moet u de WSL-host-id toevoegen aan uw firewall.
Een niet-beheerder gebruiker aanmaken voor een SQL-database en machtigingen verlenen
Met deze stap maakt u een gebruiker zonder beheerdersrechten aan en verleent u hem alle machtigingen voor de demo-database.
Zie Tutorial: Een database beveiligen in Azure SQL Database of serviceconnector gebruiken om een Microsoft Entra-beheerdergebruiker voor uw Azure SQL Database-server te maken, zoals wordt weergegeven in de volgende stappen:
Installeer eerst de extensie Service Connector zonder wachtwoord voor de Azure CLI:
az extension add --name serviceconnector-passwordless --upgradeGebruik vervolgens de volgende opdracht om de Microsoft Entra niet-beheerder te maken:
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
De Microsoft Entra beheerder die u hebt gemaakt, is een sql-databasebeheerder, dus u hoeft geen nieuwe gebruiker te maken.
Belangrijk
Azure SQL-databaseverbindingen zonder wachtwoord vereisen dat de MS-SQL Server Driver wordt bijgewerkt naar versie 12.1.0 of hoger. De verbindingsoptie is authentication=DefaultAzureCredential in versie 12.1.0 en authentication=ActiveDirectoryDefault in versie 12.2.0.
Gegevens opslaan uit Azure SQL Database
Met een Azure SQL Database-exemplaar kunt u gegevens opslaan met behulp van Spring Cloud Azure.
Als u de Spring Cloud Azure Starter-module wilt installeren, voegt u de volgende afhankelijkheden toe aan het bestand pom.xml:
De Spring Cloud Azure Stuklijst (BOM):
<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>Notitie
Als u Spring Boot 4.0.x gebruikt, moet u de
spring-cloud-azure-dependenciesversie instellen op7.1.0.Als u Spring Boot 3.5.x gebruikt, moet u de
spring-cloud-azure-dependenciesversie instellen op6.1.0.Als u Spring Boot 3.1.x-3.5.x gebruikt, moet u de
spring-cloud-azure-dependenciesversie instellen op5.25.0.Als u Spring Boot 2.x gebruikt, moet u de
spring-cloud-azure-dependenciesversie instellen op4.20.0.Deze BOM (Bill of Material) moet worden geconfigureerd in de
<dependencyManagement>sectie van uw pom.xml-bestand. Dit zorgt ervoor dat alle Spring Cloud-Azure afhankelijkheden dezelfde versie gebruiken.Zie Welke Versie van Spring Cloud Azure Moet Ik Gebruiken voor meer informatie over de versie die voor deze BOM wordt gebruikt.
Het Spring Cloud Azure Starter-artefact:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>Notitie
Aangezien dit een afhankelijkheid is, moet deze worden toegevoegd in de
<dependencies>sectie van de pom.xml. De versie is hier niet geconfigureerd, omdat deze wordt beheerd door de BOM die we eerder hebben toegevoegd.
Spring Boot configureren voor gebruik van Azure SQL Database
Als u gegevens uit Azure SQL Database met Spring Data JDBC wilt opslaan, voert u de volgende stappen uit om de toepassing te configureren:
Configureer een Azure SQL Database-referenties in het configuratiebestand 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=alwaysWaarschuwing
De configuratie-eigenschap
spring.sql.init.mode=alwaysbetekent dat Spring Boot automatisch een databaseschema genereert met behulp van het schema.sql-bestand dat u vervolgens maakt, telkens wanneer de server wordt gestart. Dit is handig voor het testen, maar vergeet niet dat uw gegevens bij elke herstart worden verwijderd, dus u moet deze niet gebruiken in productie.
Maak het configuratiebestand src/main/resources/schema.sql om het databaseschema te configureren en voeg vervolgens de volgende inhoud toe.
DROP TABLE IF EXISTS todo; CREATE TABLE todo (id INT IDENTITY PRIMARY KEY, description VARCHAR(255), details VARCHAR(4096), done BIT);
Maak een nieuwe klasse
TodoJava. Deze klasse is een domeinmodel dat is toegewezen aan detodotabel die automatisch wordt gemaakt door Spring Boot. De volgende code negeert degettersensettersmethoden.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; }Bewerk het opstartklassebestand om de volgende inhoud weer te geven.
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> { }Aanbeveling
In deze handleiding zijn er geen verificatiebewerkingen in de configuratie of de code. Voor het maken van verbinding met Azure-services is echter verificatie vereist. Als u de verificatie wilt voltooien, moet u Azure Identiteit gebruiken. Spring Cloud Azure maakt gebruik van
DefaultAzureCredential, die de Azure Identity-bibliotheek biedt om u te helpen referenties te verkrijgen zonder codewijzigingen.DefaultAzureCredentialondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt. Met deze aanpak kan uw app verschillende verificatiemethoden gebruiken in verschillende omgevingen (zoals lokale en productieomgevingen) zonder omgevingsspecifieke code te implementeren. Zie DefaultAzureCredential voor meer informatie.Als u de verificatie in lokale ontwikkelomgevingen wilt voltooien, kunt u Azure CLI, Visual Studio Code, PowerShell of andere methoden gebruiken. Zie Azure-verificatie in Java ontwikkelomgevingen voor meer informatie. Als u de verificatie in Azure hostingomgevingen wilt voltooien, raden we u aan om een door de gebruiker toegewezen beheerde identiteit te gebruiken. Zie Wat zijn beheerde identiteiten voor Azure resources?
Start de toepassing. De toepassing slaat gegevens op in de database. U ziet logboeken die vergelijkbaar zijn met het volgende voorbeeld:
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
Implementeren in Azure Spring Apps
Nu de Spring Boot-toepassing lokaal wordt uitgevoerd, is het tijd om deze naar productie te verplaatsen. Azure Spring Apps maakt het eenvoudig om Spring Boot-toepassingen te implementeren in Azure zonder codewijzigingen. De service beheert de infrastructuur van Spring-toepassingen, zodat ontwikkelaars zich kunnen richten op hun code. Azure Spring Apps biedt levenscyclusbeheer met behulp van uitgebreide bewaking en diagnose, configuratiebeheer, servicedetectie, CI/CD-integratie, blauwgroene implementaties en meer. Zie Uw eerste toepassing implementeren voor Azure Spring Apps om uw toepassing te implementeren in Azure Spring Apps.