Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku pokazano, jak przechowywać dane w Azure Database for PostgreSQL przy użyciu Spring Data JPA.
Java Persistence API (JPA) jest standardowym interfejsem API Java do mapowania obiektowo-relacyjnego.
W tym samouczku przedstawiono dwie metody uwierzytelniania: uwierzytelnianie Microsoft Entra i uwierzytelnianie PostgreSQL. Karta Passwordless pokazuje uwierzytelnianie Microsoft Entra, a karta Password pokazuje uwierzytelnianie PostgreSQL.
Uwierzytelnianie Microsoft Entra to mechanizm łączenia się z Azure Database for PostgreSQL przy użyciu tożsamości, które są zdefiniowane w Microsoft Entra ID. Dzięki uwierzytelnianiu Microsoft Entra można zarządzać tożsamościami użytkowników bazy danych i innymi usługami Microsoft w centralnej lokalizacji, co upraszcza zarządzanie uprawnieniami.
Uwierzytelnianie postgreSQL używa kont przechowywanych w usłudze PostgreSQL. Jeśli zdecydujesz się używać haseł jako poświadczeń dla kont, te poświadczenia będą przechowywane w user tabeli. Ponieważ te hasła są przechowywane w usłudze PostgreSQL, musisz samodzielnie zarządzać rotacją haseł.
Wymagania wstępne
Subskrypcja Azure — utwórz ją bezpłatnie.
Java Development Kit (JDK) w wersji 8 lub nowszej.
Jeśli nie masz aplikacji Spring Boot, utwórz projekt Maven za pomocą narzędzia Spring Initializr. Pamiętaj, aby wybrać pozycję Maven Project i w obszarze Dependencies, dodaj Spring Web, Spring Data JDBC i PostgreSQL Driver zależności, a następnie wybierz Java w wersji 8 lub nowszej.
- Jeśli go nie masz, utwórz wystąpienie serwera elastycznego Azure Database for PostgreSQL o nazwie
postgresqlflexibletesti bazę danych o nazwiedemo. Aby uzyskać instrukcje, zobacz Quickstart: Tworzenie serwera Azure Database for PostgreSQL — serwer elastyczny w portalu Azure.
Ważne
Aby używać połączeń bez hasła, skonfiguruj użytkownika administratora usługi Microsoft Entra dla swojej elastycznej instancji serwera Azure Database for PostgreSQL. Aby uzyskać więcej informacji, zobacz Zarządzanie rolami Microsoft Entra w Azure Database for PostgreSQL — serwer elastyczny.
Zobacz przykładową aplikację
W tym samouczku utworzysz kod przykładowej aplikacji. Jeśli chcesz przyspieszyć, ta aplikacja jest już kodowana i dostępna pod adresem https://github.com/Azure-Samples/quickstart-spring-data-jpa-postgresql.
Konfigurowanie reguły zapory dla serwera PostgreSQL
Domyślnie, wystąpienia Azure Database for PostgreSQL są zabezpieczone. Ma ona zaporę, która nie zezwala na żadne połączenie przychodzące.
Aby móc używać bazy danych, otwórz zaporę serwera, aby zezwolić lokalnemu adresowi IP na dostęp do serwera bazy danych. Aby uzyskać więcej informacji, zobacz reguły Firewall w Azure Database for PostgreSQL — serwer elastyczny.
Jeśli łączysz się z serwerem PostgreSQL z systemu Podsystem Windows dla systemu Linux (WSL) na komputerze z systemem Windows, musisz dodać adres hosta WSL do zapory.
Tworzenie użytkownika niebędącego administratorem bazy danych PostgreSQL i udzielanie uprawnień
Następnie utwórz użytkownika niebędącego administratorem i przyznaj wszystkie uprawnienia do bazy danych.
Poniższa metoda umożliwia utworzenie użytkownika niebędącego administratorem korzystającego z połączenia bez hasła.
Użyj następującego polecenia, aby zainstalować rozszerzenie Service Connector bez potrzeby używania hasła dla Azure CLI:
az extension add --name serviceconnector-passwordless --upgradeUżyj następującego polecenia, aby utworzyć Microsoft Entra użytkownika niebędącego administratorem:
az connection create postgres-flexible \ --resource-group <your_resource_group_name> \ --connection postgres_conn \ --target-resource-group <your_resource_group_name> \ --server postgresqlflexibletest \ --database demo \ --user-account \ --query authInfo.userName \ --output tsvPo zakończeniu wykonywania polecenia zanotuj nazwę użytkownika w danych wyjściowych konsoli.
Przechowywanie danych z Azure Database for PostgreSQL
Teraz, gdy masz Azure Database for PostgreSQL Flexible Server, możesz przechowywać dane przy użyciu Spring Cloud Azure.
Aby zainstalować moduł Spring Cloud Azure Starter JDBC PostgreSQL, dodaj następujące zależności do pliku pom.xml:
Projekt Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Uwaga
Jeśli używasz platformy Spring Boot 4.0.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na7.2.0.Jeśli używasz platformy Spring Boot 3.5.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na6.2.0.Jeśli używasz platformy Spring Boot 3.1.x-3.5.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na5.25.0.Jeśli używasz środowiska Spring Boot 2.x, ustaw wersję
spring-cloud-azure-dependenciesna4.20.0.Tę listę materiałów (BOM) należy skonfigurować w sekcji
<dependencyManagement>pliku pom.xml. Dzięki temu wszystkie zależności usługi Spring Cloud Azure korzystają z tej samej wersji.Aby uzyskać więcej informacji na temat wersji używanej w tym BOM, zobacz Którą wersję Spring Cloud Azure powinienem użyć?.
Artefakt Startowy JDBC PostgreSQL w usłudze Spring Cloud Azure:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Uwaga
Połączenia bez hasła są obsługiwane od wersji 4.5.0.
Konfigurowanie środowiska Spring Boot do używania Azure Database for PostgreSQL
Aby przechowywać dane z Azure Database for PostgreSQL przy użyciu narzędzia Spring Data JPA, wykonaj następujące kroki, aby skonfigurować aplikację:
Skonfiguruj poświadczenia dla Azure Database for PostgreSQL, dodając poniższe właściwości do pliku konfiguracyjnego application.properties.
logging.level.org.hibernate.SQL=DEBUG spring.datasource.url=jdbc:postgresql://postgresqlflexibletest.postgres.database.azure.com:5432/demo?sslmode=require spring.datasource.username=<your_postgresql_ad_non_admin_username> spring.datasource.azure.passwordless-enabled=true spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
- Jeśli go nie masz, utwórz wystąpienie pojedynczego serwera Azure Database for PostgreSQL o nazwie
postgresqlsingletesti bazę danych o nazwiedemo. Aby uzyskać instrukcje, zobacz Quickstart: Tworzenie serwera Azure Database for PostgreSQL przy użyciu portalu Azure.
Ważne
Aby używać połączeń bezhasłowych, skonfiguruj administratora Microsoft Entra dla wystąpienia Azure Database for PostgreSQL Single Server. Aby uzyskać więcej informacji, zobacz Użyj Microsoft Entra ID do uwierzytelniania za pomocą bazy danych PostgreSQL.
Zobacz przykładową aplikację
W tym artykule kodujesz przykładową aplikację. Jeśli chcesz przyspieszyć, ta aplikacja jest już kodowana i dostępna pod adresem https://github.com/Azure-Samples/quickstart-spring-data-jpa-postgresql.
Konfigurowanie reguły zapory dla serwera PostgreSQL
Domyślnie, wystąpienia Azure Database for PostgreSQL są zabezpieczone. Ma ona zaporę, która nie zezwala na żadne połączenie przychodzące.
Aby móc używać bazy danych, otwórz zaporę serwera, aby zezwolić lokalnemu adresowi IP na dostęp do serwera bazy danych. Aby uzyskać więcej informacji, zobacz Utwórz i zarządzaj regułami zapory dla Azure Database for PostgreSQL — pojedynczy serwer przy użyciu portalu Azure.
Jeśli łączysz się z serwerem PostgreSQL z systemu Podsystem Windows dla systemu Linux (WSL) na komputerze z systemem Windows, musisz dodać adres hosta WSL do zapory.
Tworzenie użytkownika niebędącego administratorem bazy danych PostgreSQL i udzielanie uprawnień
Następnie utwórz użytkownika niebędącego administratorem i przyznaj wszystkie uprawnienia do bazy danych.
Poniższa metoda umożliwia utworzenie użytkownika niebędącego administratorem korzystającego z połączenia bez hasła.
Użyj następującego polecenia, aby zainstalować rozszerzenie Service Connector bez potrzeby używania hasła dla Azure CLI:
az extension add --name serviceconnector-passwordless --upgradeUżyj następującego polecenia, aby utworzyć Microsoft Entra użytkownika niebędącego administratorem:
az connection create postgres \ --resource-group <your_resource_group_name> \ --connection postgres_conn \ --target-resource-group <your_resource_group_name> \ --server postgresqlsingletest \ --database demo \ --user-account \ --query authInfo.userName \ --output tsvPo zakończeniu wykonywania polecenia zanotuj nazwę użytkownika w danych wyjściowych konsoli.
Przechowywanie danych z Azure Database for PostgreSQL
Teraz, gdy masz instancję pojedynczego serwera Azure Database for PostgreSQL, możesz przechowywać dane przy użyciu Spring Cloud Azure.
Aby zainstalować moduł Spring Cloud Azure Starter JDBC PostgreSQL, dodaj następujące zależności do pliku pom.xml:
Projekt Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Uwaga
Jeśli używasz platformy Spring Boot 4.0.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na7.2.0.Jeśli używasz platformy Spring Boot 3.5.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na6.2.0.Jeśli używasz platformy Spring Boot 3.1.x-3.5.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na5.25.0.Jeśli używasz środowiska Spring Boot 2.x, ustaw wersję
spring-cloud-azure-dependenciesna4.20.0.Tę listę materiałów (BOM) należy skonfigurować w sekcji
<dependencyManagement>pliku pom.xml. Dzięki temu wszystkie zależności usługi Spring Cloud Azure korzystają z tej samej wersji.Aby uzyskać więcej informacji na temat wersji używanej w tym BOM, zobacz Którą wersję Spring Cloud Azure powinienem użyć?.
Artefakt Startowy JDBC PostgreSQL w usłudze Spring Cloud Azure:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Uwaga
Połączenia bez hasła są obsługiwane od wersji 4.5.0.
Konfigurowanie środowiska Spring Boot do używania Azure Database for PostgreSQL
Aby przechowywać dane z Azure Database for PostgreSQL przy użyciu narzędzia Spring Data JPA, wykonaj następujące kroki, aby skonfigurować aplikację:
Skonfiguruj poświadczenia dla Azure Database for PostgreSQL, dodając poniższe właściwości do pliku konfiguracyjnego application.properties.
logging.level.org.hibernate.SQL=DEBUG spring.datasource.url=jdbc:postgresql://postgresqlsingletest.postgres.database.azure.com:5432/demo?sslmode=require spring.datasource.username=<your_postgresql_ad_non_admin_username>@postgresqlsingletest spring.datasource.azure.passwordless-enabled=true spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
Utwórz nową klasę
TodoJava. Ta klasa jest modelem domeny mapowanym na tabelętodo, która zostanie utworzona automatycznie przez JPA. Poniższy kod ignoruje metodygettersisetters.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; }Edytuj plik klasy uruchamiania, aby wyświetlić następującą zawartość.
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> { }Napiwek
W tym samouczku nie ma żadnych operacji uwierzytelniania w konfiguracjach ani kodzie. Jednak nawiązywanie połączenia z usługami Azure wymaga uwierzytelniania. Aby ukończyć uwierzytelnianie, musisz użyć Azure Identity. Usługa Spring Cloud Azure używa
DefaultAzureCredential, którą udostępnia biblioteka Azure Identity, aby ułatwić uzyskiwanie poświadczeń bez żadnych zmian w kodzie.DefaultAzureCredentialobsługuje wiele metod uwierzytelniania i określa, która metoda ma być używana w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (takich jak środowiska lokalne i produkcyjne) bez implementowania kodu specyficznego dla środowiska. Aby uzyskać więcej informacji, zobacz DefaultAzureCredential.Aby ukończyć uwierzytelnianie w lokalnych środowiskach deweloperskich, możesz użyć Azure CLI, Visual Studio Code, programu PowerShell lub innych metod. Aby uzyskać więcej informacji, zobacz uwierzytelnianie w Azure w środowiskach deweloperskich Java. Aby ukończyć uwierzytelnianie w środowiskach hostingu Azure, zalecamy użycie tożsamości zarządzanej przypisanej przez użytkownika. Aby uzyskać więcej informacji, zobacz Jak są tożsamości zarządzane dla zasobów Azure?
Uruchom aplikację. Zobaczysz dzienniki podobne do następującego przykładu:
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
Wdrażanie do Azure Spring Apps
Teraz, gdy aplikacja Spring Boot działa lokalnie, nadszedł czas, aby przenieść ją do środowiska produkcyjnego. Azure Spring Apps ułatwia wdrażanie aplikacji Spring Boot w Azure bez żadnych zmian w kodzie. Usługa zarządza infrastrukturą aplikacji Spring, aby deweloperzy mogli skupić się na swoim kodzie. Azure Spring Apps zapewnia zarządzanie cyklem życia przy użyciu kompleksowego monitorowania i diagnostyki, zarządzania konfiguracją, odnajdywania usług, integracji CI/CD, wdrożeń blue-green i nie tylko. Aby wdrożyć aplikację do Azure Spring Apps, zapoznaj się z Wdrożenie pierwszej aplikacji do Azure Spring Apps.