Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az oktatóanyag bemutatja, hogyan tárolhat adatokat az Azure Database for PostgreSQL-ben a Spring Data JPA használatával.
A Java Persistence API (JPA) az objektum-relációs leképezés szabványos Java API-ja.
Ebben az oktatóanyagban két hitelesítési módszert használunk: a Microsoft Entra-hitelesítést és a PostgreSQL-hitelesítést. A Jelszó nélküli lapon a Microsoft Entra-hitelesítés, a Jelszó lapon pedig a PostgreSQL-hitelesítés látható.
A Microsoft Entra-hitelesítés az Azure Database for PostgreSQL-hez való csatlakozás mechanizmusa a Microsoft Entra ID-ban meghatározott identitások használatával. A Microsoft Entra-hitelesítéssel központi helyen kezelheti az adatbázis felhasználói identitásait és más Microsoft-szolgáltatások, ami leegyszerűsíti az engedélykezelést.
A PostgreSQL-hitelesítés a PostgreSQL-ben tárolt fiókokat használja. Ha jelszavakat használ a fiókok hitelesítő adataiként, ezeket a hitelesítő adatokat a rendszer a user táblában tárolja. Mivel ezek a jelszavak a PostgreSQL-ben vannak tárolva, saját maga kell kezelnie a jelszavak rotálását.
Előfeltételek
Azure-előfizetés – hozzon létre egyet ingyenesen.
Java Development Kit (JDK), 8-es vagy újabb verzió.
Ha nem rendelkezik Spring Boot-alkalmazással, hozzon létre egy Maven-projektet a Spring Initializrrel. Mindenképpen válassza ki a Maven Projectet, és a Függőségek területen adja hozzá a Spring Web, a Spring Data JDBC és a PostgreSQL-illesztőprogram függőségeit, majd válassza a Java 8-es vagy újabb verzióját.
- Ha nincs ilyenje, hozzon létre egy Azure Database for PostgreSQL Flexible Server példányt, amelynek neve
postgresqlflexibletest, és egy adatbázist, amelynek nevedemo. Útmutatásért lásd : Rövid útmutató: Rugalmas Azure Database for PostgreSQL-kiszolgáló létrehozása az Azure Portalon.
Fontos
Jelszó nélküli kapcsolatok használatához konfigurálja a Microsoft Entra rendszergazda felhasználóját a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz. További információ: Microsoft Entra-szerepkörök kezelése rugalmas Azure Database for PostgreSQL-kiszolgálón.
A mintaalkalmazás megtekintése
Ebben az oktatóanyagban egy mintaalkalmazást fog kódni. Ha gyorsabban szeretne haladni, ez az alkalmazás már kódolt és elérhető a következő címen https://github.com/Azure-Samples/quickstart-spring-data-jpa-postgresql: .
Tűzfalszabály konfigurálása a PostgreSQL-kiszolgálóhoz
Az Azure Database for PostgreSQL-példányok alapértelmezés szerint védettek. Tűzfallal rendelkezik, amely semmilyen bejövő kapcsolatot sem engedélyez.
Az adatbázis használatához nyissa meg a kiszolgáló tűzfalát, hogy a helyi IP-cím hozzáférhessen az adatbázis-kiszolgálóhoz. További információ: Tűzfalszabályok a rugalmas Azure Database for PostgreSQL-kiszolgálón.
Ha Windows számítógépen Windows alatti Linux rendszeren (WSL) keresztül csatlakozik a PostgreSQL szerverhez, szükséges hozzáadnia a WSL gazda azonosítóját a tűzfalhoz.
Nem rendszergazdai PostgreSQL-felhasználó létrehozása és engedély megadása
Ezután hozzon létre egy nem rendszergazdai felhasználót, és adjon meg minden engedélyt az adatbázisnak.
Az alábbi módszerrel jelszó nélküli kapcsolatot használó, nem rendszergazdai felhasználót hozhat létre.
Az Alábbi paranccsal telepítse a Service Connector jelszó nélküli bővítményét az Azure CLI-hez:
az extension add --name serviceconnector-passwordless --upgradeA Microsoft Entra nem rendszergazdai felhasználójának létrehozásához használja az alábbi parancsot:
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 tsvAmikor a parancs befejeződik, jegyezze fel a felhasználónevet a konzol kimenetében.
Adatok tárolása az Azure Database for PostgreSQL-ből
Most, hogy rendelkezik rugalmas Azure Database for PostgreSQL-kiszolgálópéldánysal, az adatokat a Spring Cloud Azure használatával tárolhatja.
A Spring Cloud Azure Starter JDBC PostgreSQL modul telepítéséhez adja hozzá a következő függőségeket a pom.xml fájlhoz:
A Spring Cloud Azure Anyagjegyzéke (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>6.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Megjegyzés
Ha Spring Boot 3.0.x-3.4.x verziót használ, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót5.23.0.Ha a Spring Boot 2.x-et használja, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót4.20.0.Ezt az anyagjegyzéket (BOM) a
<dependencyManagement>pom.xml fájl szakaszában kell konfigurálni. Ez biztosítja, hogy minden Spring Cloud Azure-függőség ugyanazt a verziót használja.A BOM-hez használt verzióról további információt a Spring Cloud Azure melyik verzióját érdemes használni.
A Spring Cloud Azure Starter JDBC PostgreSQL-összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Megjegyzés
A jelszó nélküli kapcsolatok a verzió 4.5.0óta támogatottak.
A Spring Boot konfigurálása az Azure Database for PostgreSQL használatára
Az Azure Database for PostgreSQL-ből a Spring Data JPA használatával történő adattároláshoz kövesse az alábbi lépéseket az alkalmazás konfigurálásához:
Az Azure Database for PostgreSQL hitelesítő adatainak konfigurálásához adja hozzá az alábbi tulajdonságokat az application.properties konfigurációs fájlhoz.
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
- Ha nincs ilyenje, hozzon létre egy Azure Database for PostgreSQL Önálló Szerver példányt a
postgresqlsingletestnévvel és egy adatbázist ademonévvel. Útmutatásért tekintse meg a rövid útmutatót: Azure Database for PostgreSQL-kiszolgáló létrehozása az Azure Portal használatával.
Fontos
Jelszó nélküli kapcsolatok használatához konfigurálja a Microsoft Entra rendszergazda felhasználóját az önálló kiszolgálóhoz tartozó Azure Database for PostgreSQL szolgáltatáshoz. További információ: A Microsoft Entra ID használata a PostgreSQL-lel való hitelesítéshez.
A mintaalkalmazás megtekintése
Ebben a cikkben egy mintaalkalmazást fog kódni. Ha gyorsabban szeretne haladni, ez az alkalmazás már kódolt és elérhető a következő címen https://github.com/Azure-Samples/quickstart-spring-data-jpa-postgresql: .
Tűzfalszabály konfigurálása a PostgreSQL-kiszolgálóhoz
Az Azure Database for PostgreSQL-példányok alapértelmezés szerint védettek. Tűzfallal rendelkezik, amely semmilyen bejövő kapcsolatot sem engedélyez.
Az adatbázis használatához nyissa meg a kiszolgáló tűzfalát, hogy a helyi IP-cím hozzáférhessen az adatbázis-kiszolgálóhoz. További információ: Tűzfalszabályok létrehozása és kezelése az Önálló Azure Database for PostgreSQL-kiszolgálóhoz az Azure Portal használatával.
Ha Windows számítógépen Windows alatti Linux rendszeren (WSL) keresztül csatlakozik a PostgreSQL szerverhez, szükséges hozzáadnia a WSL gazda azonosítóját a tűzfalhoz.
Nem rendszergazdai PostgreSQL-felhasználó létrehozása és engedély megadása
Ezután hozzon létre egy nem rendszergazdai felhasználót, és adjon meg minden engedélyt az adatbázisnak.
Az alábbi módszerrel jelszó nélküli kapcsolatot használó, nem rendszergazdai felhasználót hozhat létre.
Az Alábbi paranccsal telepítse a Service Connector jelszó nélküli bővítményét az Azure CLI-hez:
az extension add --name serviceconnector-passwordless --upgradeA Microsoft Entra nem rendszergazdai felhasználójának létrehozásához használja az alábbi parancsot:
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 tsvAmikor a parancs befejeződik, jegyezze fel a felhasználónevet a konzol kimenetében.
Adatok tárolása az Azure Database for PostgreSQL-ből
Most, hogy már rendelkezik egy önálló Azure Database for PostgreSQL-kiszolgálópéldánysal, az adatokat a Spring Cloud Azure használatával tárolhatja.
A Spring Cloud Azure Starter JDBC PostgreSQL modul telepítéséhez adja hozzá a következő függőségeket a pom.xml fájlhoz:
A Spring Cloud Azure Anyagjegyzéke (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>6.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Megjegyzés
Ha Spring Boot 3.0.x-3.4.x verziót használ, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót5.23.0.Ha a Spring Boot 2.x-et használja, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót4.20.0.Ezt az anyagjegyzéket (BOM) a
<dependencyManagement>pom.xml fájl szakaszában kell konfigurálni. Ez biztosítja, hogy minden Spring Cloud Azure-függőség ugyanazt a verziót használja.A BOM-hez használt verzióról további információt a Spring Cloud Azure melyik verzióját érdemes használni.
A Spring Cloud Azure Starter JDBC PostgreSQL-összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Megjegyzés
A jelszó nélküli kapcsolatok a verzió 4.5.0óta támogatottak.
A Spring Boot konfigurálása az Azure Database for PostgreSQL használatára
Az Azure Database for PostgreSQL-ből a Spring Data JPA használatával történő adattároláshoz kövesse az alábbi lépéseket az alkalmazás konfigurálásához:
Az Azure Database for PostgreSQL hitelesítő adatainak konfigurálásához adja hozzá az alábbi tulajdonságokat az application.properties konfigurációs fájlhoz.
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
Hozzon létre egy új
TodoJava-osztályt. Ez az osztály egy olyan tartománymodell, amely atodoJPA által automatikusan létrehozott táblára van leképezve. Az alábbi kód figyelmen kívül hagyja agettersés asettersmetódusokat.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; }Szerkessze az indítási osztályfájlt a következő tartalom megjelenítéséhez.
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> { }Tipp.
Ebben az oktatóanyagban nincsenek hitelesítési műveletek a konfigurációkban vagy a kódban. Az Azure-szolgáltatásokhoz való csatlakozáshoz azonban hitelesítés szükséges. A hitelesítés befejezéséhez az Azure Identity-et kell használnia. A Spring Cloud Azure
DefaultAzureCredentialaz Azure Identity-kódtár használatával segít a hitelesítő adatok kódmódosítások nélküli beszerzésében.DefaultAzureCredentialtöbb hitelesítési módszert támogat, és meghatározza, hogy melyik metódust használja futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (például helyi és éles környezetekben) környezetspecifikus kód implementálása nélkül. További információ: DefaultAzureCredential.A helyi fejlesztési környezetekben a hitelesítés befejezéséhez használhatja az Azure CLI-t, a Visual Studio Code-ot, a PowerShellt vagy más módszereket. További információ: Azure-hitelesítés Java-fejlesztési környezetekben. A hitelesítés azure-beli üzemeltetési környezetekben való elvégzéséhez javasoljuk a felhasználó által hozzárendelt felügyelt identitás használatát. További információ: Mik az Azure-erőforrások felügyelt identitásai?
Indítsa el az alkalmazást. A következő példához hasonló naplók láthatók:
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
Üzembe helyezés az Azure Spring Appsben
Most, hogy a Spring Boot-alkalmazás helyileg fut, itt az ideje, hogy éles környezetbe kerüljön. Az Azure Spring Apps megkönnyíti a Spring Boot-alkalmazások üzembe helyezését az Azure-ban kódmódosítások nélkül. A szolgáltatás kezeli a Spring-alkalmazások infrastruktúráját, hogy a fejlesztők a kódjukra összpontosíthassanak. Az Azure Spring Apps átfogó monitorozási és diagnosztikai, konfigurációkezelési, szolgáltatásfelderítési, CI/CD-integrációs, kék-zöld környezetek és egyebek használatával biztosítja az életciklus-felügyeletet. Az alkalmazás Azure Spring Appsben való üzembe helyezéséről az első alkalmazás üzembe helyezése az Azure Spring Appsben című témakörben olvashat.