Megosztás a következőn keresztül:


Spring Data JPA használata az Azure Database for PostgreSQL-hez

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

  • PostgreSQL parancssori ügyfél.

  • 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.

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.

  1. 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 --upgrade
    
  2. A 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 tsv
    

    Amikor 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-dependencies verziót 5.23.0.

    Ha a Spring Boot 2.x-et használja, mindenképpen állítsa be a spring-cloud-azure-dependencies verziót 4.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:

  1. 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
    

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.

  1. 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 --upgrade
    
  2. A 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 tsv
    

    Amikor 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-dependencies verziót 5.23.0.

    Ha a Spring Boot 2.x-et használja, mindenképpen állítsa be a spring-cloud-azure-dependencies verziót 4.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:

  1. 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
    
  1. Hozzon létre egy új Todo Java-osztályt. Ez az osztály egy olyan tartománymodell, amely a todo JPA által automatikusan létrehozott táblára van leképezve. Az alábbi kód figyelmen kívül hagyja a getters és a setters metó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;
    
    }
    
  2. 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.

    DefaultAzureCredential tö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?

  3. 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.

Következő lépések