Share via


A Spring Data JDBC használata az Azure Database for PostgreSQL-lel

Ez az oktatóanyag bemutatja, hogyan tárolhat adatokat egy Azure Database for PostgreSQL-adatbázisban a Spring Data JDBC használatával.

A JDBC a hagyományos relációs adatbázisokhoz való csatlakozá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.

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-jdbc-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 windowsos számítógépen Linuxos Windows-alrendszer (WSL) keresztül csatlakozik a PostgreSQL-kiszolgálóhoz, hozzá kell adnia a WSL-gazdagép 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. A következő paranccsal telepítse a Service Csatlakozás or jelszó nélküli bővítményt 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>5.12.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Feljegyzés

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

Feljegyzé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 JDBC 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.springframework.jdbc.core=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.sql.init.mode=always
    

    Figyelmeztetés

    A konfigurációs tulajdonság spring.sql.init.mode=always azt jelenti, hogy a Spring Boot automatikusan létrehoz egy adatbázissémát a következőként létrehozott schema.sql fájl használatával, a kiszolgáló minden indításakor. Ez a funkció kiválóan alkalmas tesztelésre, de ne feledje, hogy minden újraindításkor törli az adatokat, ezért éles környezetben ne használja.

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-jdbc-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 windowsos számítógépen Linuxos Windows-alrendszer (WSL) keresztül csatlakozik a PostgreSQL-kiszolgálóhoz, hozzá kell adnia a WSL-gazdagép 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. A következő paranccsal telepítse a Service Csatlakozás or jelszó nélküli bővítményt 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>5.12.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Feljegyzés

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

Feljegyzé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 JDBC 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.springframework.jdbc.core=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.sql.init.mode=always
    

    Figyelmeztetés

    A konfigurációs tulajdonság spring.sql.init.mode=always azt jelenti, hogy a Spring Boot automatikusan létrehoz egy adatbázissémát a következőként létrehozott schema.sql fájl használatával, a kiszolgáló minden indításakor. Ez a funkció kiválóan alkalmas tesztelésre, de ne feledje, hogy minden újraindításkor törli az adatokat, ezért éles környezetben ne használja.

  1. Hozza létre az src/main/resources/schema.sql konfigurációs fájlt az adatbázisséma konfigurálásához, majd adja hozzá a következő tartalmat.

    DROP TABLE IF EXISTS todo;
    CREATE TABLE todo (id SERIAL PRIMARY KEY, description VARCHAR(255), details VARCHAR(4096), done BOOLEAN);
    
  1. Hozzon létre egy új Todo Java-osztályt. Ez az osztály egy olyan tartománymodell, amely a todo Spring Boot által automatikusan létrehozott táblára van leképezve. Az alábbi kód figyelmen kívül hagyja a metódusokat és setters a getters metódusokat.

    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;
    
    }
    
  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.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> {
    
    }
    

    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. Az alkalmazás adatokat tárol az adatbázisba. A következő példához hasonló naplók láthatók:

    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
    

Üzembe helyezés az Azure Spring Appsben

Most, hogy a Spring Boot-alkalmazás helyileg fut, ideje éles környezetbe áthelyezni. 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