Spring Data JPA használata Azure SQL adatbázissal

Ez az oktatóanyag bemutatja, hogyan tárolhat adatokat Azure SQL DatabaseSpring 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: Microsoft Entra hitelesítést és SQL Database-hitelesítést. A Jelszó nélküli lapon a Microsoft Entra hitelesítés, a Jelszó lapon pedig az SQL Database-hitelesítés látható.

Microsoft Entra hitelesítés egy olyan mechanizmus, amellyel Azure SQL Database-adatbázishoz csatlakozhat a Microsoft Entra ID definiált identitások használatával. A Microsoft Entra hitelesítés használatával 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.

Az SQL Database-hitelesítés az SQL Database-ben tárolt fiókokat használja. Ha jelszavakat használ a fiókok hitelesítő adataiként, ezeket a hitelesítő adatokat a felhasználói táblában tárolja. Mivel ezek a jelszavak az SQL Database-ben vannak tárolva, kezelnie kell a jelszavak rotálását.

Előfeltételek

Fontos

Jelszó nélküli kapcsolatok használatához frissítse a MS SQL Server Illesztőprogram verzióra 12.1.0 vagy újabb verzióra, majd hozzon létre egy Microsoft Entra rendszergazdai felhasználót a Azure SQL Database kiszolgálópéldányhoz. További információért lásd a Microsoft Entra rendszergazda létrehozása részt az Oktatóanyag: Adatbázis védelme az Azure SQL Database-ben.

A mintaalkalmazás megtekintése

Ebben az oktatóanyagban egy mintaalkalmazást kódel. Ha gyorsabban szeretne haladni, az alkalmazás már kódolt, és elérhető a https://github.com/Azure-Samples/quickstart-spring-data-jpa-sql-server címen.

Tűzfalszabály konfigurálása a Azure SQL Database-kiszolgálóhoz

Azure SQL Database 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ó: Tutorial: Adatbázis védelme Azure SQL Database.

Ha Windows számítógépen lévő Linuxos Windows-alrendszer (WSL) Azure SQL Database kiszolgálóhoz csatlakozik, hozzá kell adnia a WSL-gazdagép azonosítóját a tűzfalhoz.

SQL-adatbázis létrehozása nem rendszergazdai felhasználóként, és engedély megadása

Ez a lépés létrehoz egy nem rendszergazdai felhasználót, és minden engedélyt megad az demo adatbázishoz.

A jelszó nélküli kapcsolatok használatához lásd: Tutorial: Adatbázis védelme Azure SQL Database vagy a Service Connector használatával hozzon létre egy Microsoft Entra rendszergazdai felhasználót a Azure SQL Database-kiszolgálóhoz, ahogyan az alábbi lépésekben látható:

  1. Először telepítse a Service Connector jelszó nélküli bővítményt a Azure CLI:

    az extension add --name serviceconnector-passwordless --upgrade
    
  2. Ezután a következő paranccsal hozza létre a Microsoft Entra nem rendszergazdai felhasználót:

    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
    

A létrehozott Microsoft Entra rendszergazda egy SQL Database-rendszergazdai felhasználó, így nem kell új felhasználót létrehoznia.

Fontos

Azure SQL adatbázis jelszó nélküli kapcsolataihoz frissíteni kell a MS SQL Server illesztőprogramot12.1.0 vagy újabb verzióra. A kapcsolat opció a authentication=DefaultAzureCredential verzió 12.1.0-ben, és a authentication=ActiveDirectoryDefault verzió 12.2.0-ben érhető el.

Tároljon adatokat az Azure SQL Database-ben

Egy Azure SQL Database-példánysal adatokat tárolhat a Spring Cloud Azure használatával.

A Spring Cloud Azure Starter modul telepítéséhez adja hozzá a következő függőségeket a pom.xml fájlhoz:

  • A Spring Cloud Azure Anyagjegyzék (BOM):

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>7.4.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Megjegyzés

    Ha a Spring Boot 4.0.x verzióját használja, állítsa a(z) spring-cloud-azure-dependencies verzióját erre: 7.4.0.

    Ha a Spring Boot 3.5.x-et használja, állítsa a(z) spring-cloud-azure-dependencies verziót 6.5.0-ra.

    Ha a Spring Boot 3.1.x-3.5.x verziót használja, mindenképpen állítsa be a verziót spring-cloud-azure-dependencies-ra/c1.

    Ha a Spring Boot 2.x-et használja, mindenképpen állítsa be a spring-cloud-azure-dependencies verziót 4.20.0-re.

    Ezt az anyagjegyzéket (BOM) a <dependencyManagement> 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.

    Az ebben az anyagjegyzékben használt verzióra vonatkozó további információkért lásd: Melyik Spring Cloud Azure verziót érdemes használnom.

  • A Spring Cloud Azure Starter műalkotás:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter</artifactId>
    </dependency>
    

    Megjegyzés

    Mivel ez az összetevő függőség, adja hozzá a <dependencies>pom.xmlszakaszához. Ne konfigurálja a verzióját, mert a korábban hozzáadott anyagjegyzék kezeli azt.

A Spring Boot konfigurálása Azure SQL Database használatára

Ha a Spring Data JPA használatával szeretne adatokat tárolni Azure SQL Database, kövesse az alábbi lépéseket az alkalmazás konfigurálásához:

  1. Konfigurálja Azure SQL Database hitelesítő adatokat az application.properties konfigurációs fájlban.

    logging.level.org.hibernate.SQL=DEBUG
    
    spring.datasource.url=jdbc:sqlserver://sqlservertest.database.windows.net:1433;databaseName=demo;authentication=DefaultAzureCredential;
    
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2016Dialect
    spring.jpa.hibernate.ddl-auto=create-drop
    

    Figyelmeztetés

    A konfigurációs tulajdonság spring.jpa.hibernate.ddl-auto=create-drop azt jelenti, hogy a Spring Boot automatikusan létrehoz egy adatbázissémát az alkalmazás indításakor, és megpróbálja törölni, amikor leáll. Ez a funkció kiválóan alkalmas tesztelésre, de minden újraindításkor törli az adatokat. Ne használja éles környezetben.

  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 Azure Identitást kell használnia. A Spring Cloud Azure DefaultAzureCredential használ, amelyet az Azure Identitástár biztosít a hitelesítő adatok kódmódosítások nélküli beszerzéséhez.

    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álhat Azure CLI, Visual Studio Code, PowerShellt vagy más módszereket. További információ: Azure hitelesítés Java fejlesztési környezetekben. Ha Azure üzemeltetési környezetekben szeretné elvégezni a hitelesítést, javasoljuk, hogy használja a felhasználó által hozzárendelt felügyelt identitást. További információ: Mi 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 a Azure Spring Apps

Most, hogy a Spring Boot-alkalmazás helyben fut, ideje áthelyezni éles környezetbe. Azure Spring Apps megkönnyíti a Spring Boot-alkalmazások Azure való üzembe helyezését 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. Azure Spring Apps teljes körű monitorozás és diagnosztika, konfigurációkezelés, szolgáltatásfelderítés, CI/CD-integráció, kék-zöld környezetek és egyebek használatával biztosítja az életciklus-felügyeletet. Az alkalmazás Azure Spring Apps való üzembe helyezéséről a A Azure Spring Apps első alkalmazás üzembe helyezéséről szóló cikkben olvashat.

Következő lépések