Spring Data JPA használata az Azure Database for MySQL-hez
Ez az oktatóanyag bemutatja, hogyan tárolhat adatokat az Azure Database for MySQL-adatbázisban 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 MySQL-hitelesítést. A Jelszó nélküli lapon a Microsoft Entra-hitelesítés, a Jelszó lapon pedig a MySQL-hitelesítés látható.
A Microsoft Entra-hitelesítés az Azure Database for MySQL-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 MySQL-hitelesítés a MySQL-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 MySQL-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. Jelölje ki a Maven Projectet, és a Függőségek területen adja hozzá a Spring Web, a Spring Data JPA és a MySQL-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 rugalmas Azure Database for MySQL-kiszolgálópéldányt.
mysqlflexibletest
Útmutatásért tekintse meg a rövid útmutatót: Rugalmas Azure Database for MySQL-kiszolgáló létrehozása az Azure Portal használatával. Ezután hozzon létre egy adatbázist .demo
Útmutatásért tekintse meg a rugalmas Azure Database for MySQL-kiszolgáló adatbázisainak létrehozását és kezelését ismertető cikket.
Fontos
Jelszó nélküli kapcsolatok használatához hozzon létre egy Microsoft Entra rendszergazdai felhasználót az Azure Database for MySQL-példányhoz. Útmutatásért tekintse meg a Rugalmas Azure Database for MySQL-kiszolgálóHoz készült Microsoft Entra-hitelesítés beállítása a Microsoft Entra Rendszergazda című szakaszá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-jpa-mysql: .
Tűzfalszabály konfigurálása a MySQL-kiszolgálóhoz
Az Azure Database for MySQL-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 kezelése az Azure Database for MySQL -rugalmas kiszolgálóhoz az Azure Portal használatával.
Ha windowsos számítógépen Linuxos Windows-alrendszer (WSL) keresztül csatlakozik a MySQL-kiszolgálóhoz, hozzá kell adnia a WSL-gazdagép IP-címét a tűzfalhoz.
Nem rendszergazdai MySQL-felhasználó létrehozása é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.
Az alábbi módszerrel jelszó nélküli kapcsolatot használó, nem rendszergazdai felhasználót hozhat létre.
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
A Microsoft Entra nem rendszergazdai felhasználójának létrehozásához használja az alábbi parancsot:
az connection create mysql-flexible \ --resource-group <your_resource_group_name> \ --connection mysql_conn \ --target-resource-group <your_resource_group_name> \ --server mysqlflexibletest \ --database demo \ --user-account mysql-identity-id=/subscriptions/<your_subscription_id>/resourcegroups/<your_resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<your_user_assigned_managed_identity_name> \ --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 MySQL-ből
Most, hogy rendelkezik rugalmas Azure Database for MySQL-kiszolgálópéldánysal, a Spring Cloud Azure használatával tárolhatja az adatokat.
A Spring Cloud Azure Starter JDBC MySQL 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 MySQL-összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</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 MySQL használatára
Az Azure Database for MySQL-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 MySQL 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.azure.passwordless-enabled=true spring.datasource.url=jdbc:mysql://mysqlflexibletest.mysql.database.azure.com:3306/demo?serverTimezone=UTC spring.datasource.username=<your_mysql_ad_non_admin_username> spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.properties.hibernate.dialect =org.hibernate.dialect.MySQL8Dialect
Figyelmeztetés
A konfigurációs tulajdonság
spring.datasource.url
hozzá lett?serverTimezone=UTC
fűzve, hogy a JDBC-illesztő az UTC dátumformátumot (vagy az egyezményes világidőt) használja az adatbázishoz való csatlakozáskor. E paraméter nélkül a Java-kiszolgáló nem ugyanazt a dátumformátumot használná, mint az adatbázis, ami hibát eredményezne.
- Ha nincs ilyenje, hozzon létre egy Azure Database for MySQL-kiszolgálópéldányt.
mysqlsingletest
Útmutatásért tekintse meg a rövid útmutatót: Azure Database for MySQL-kiszolgáló létrehozása az Azure Portal használatával. Ezután hozzon létre egy adatbázist .demo
Útmutatásért tekintse meg a Felhasználók létrehozása az Azure Database for MySQL-ben című szakaszt.
Fontos
Jelszó nélküli kapcsolatok használatához hozzon létre egy Microsoft Entra rendszergazdai felhasználót az Azure Database for MySQL-példányhoz. Útmutatásért tekintse meg a Microsoft Entra Rendszergazda Microsoft Entra-azonosító használata a MySQL-hitelesítéshez című felhasználói szakaszát.
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-mysql: .
Tűzfalszabály konfigurálása a MySQL-kiszolgálóhoz
Az Azure Database for MySQL-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ó: Azure Database for MySQL tűzfalszabályok létrehozása és kezelése az Azure Portal használatával.
Ha windowsos számítógépen Linuxos Windows-alrendszer (WSL) keresztül csatlakozik a MySQL-kiszolgálóhoz, hozzá kell adnia a WSL-gazdagép IP-címét a tűzfalhoz.
Nem rendszergazdai MySQL-felhasználó létrehozása é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.
Fontos
Jelszó nélküli kapcsolatok használatához hozzon létre egy Microsoft Entra rendszergazdai felhasználót az Azure Database for MySQL-példányhoz. További információ: A Microsoft Entra Rendszergazda a Microsoft Entra ID használata a MySQL-vel való hitelesítéshez című felhasználói szakasza.
Hozzon létre egy create_ad_user.sql nevű SQL-szkriptet, amely nem rendszergazdai felhasználót hoz létre. Adja hozzá a következő tartalmat, és mentse helyileg:
export AZ_MYSQL_AD_NON_ADMIN_USERID=$(az ad signed-in-user show --query id --output tsv)
cat << EOF > create_ad_user.sql
SET aad_auth_validate_oids_in_tenant = OFF;
CREATE AADUSER '<your_mysql_ad_non_admin_username>' IDENTIFIED BY '$AZ_MYSQL_AD_NON_ADMIN_USERID';
GRANT ALL PRIVILEGES ON demo.* TO '<your_mysql_ad_non_admin_username>'@'%';
FLUSH privileges;
EOF
Ezután az alábbi paranccsal futtassa az SQL-szkriptet a Microsoft Entra nem rendszergazdai felhasználójának létrehozásához:
mysql -h mysqlsingletest.mysql.database.azure.com --user <your_mysql_ad_admin_username>@mysqlsingletest --enable-cleartext-plugin --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) < create_ad_user.sql
Tipp.
Ha Microsoft Entra-hitelesítést szeretne használni az Azure Database for MySQL-hez való csatlakozáshoz, be kell jelentkeznie a beállított Microsoft Entra rendszergazdai felhasználóval, majd jelszóként be kell szereznie a hozzáférési jogkivonatot. További információ: A Microsoft Entra ID használata a MySQL-hitelesítéshez.
Adatok tárolása az Azure Database for MySQL-ből
Most, hogy rendelkezik egy Önálló Azure Database for MySQL-kiszolgálópéldánysal, az adatokat a Spring Cloud Azure használatával tárolhatja.
A Spring Cloud Azure Starter JDBC MySQL 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 MySQL-összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</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 MySQL használatára
Az Azure Database for MySQL-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 MySQL 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.azure.passwordless-enabled=true spring.datasource.url=jdbc:mysql://mysqlsingletest.mysql.database.azure.com:3306/demo?serverTimezone=UTC spring.datasource.username=<your_mysql_ad_non_admin_username>@mysqlsingletest spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.properties.hibernate.dialect =org.hibernate.dialect.MySQL8Dialect
Figyelmeztetés
A konfigurációs tulajdonság
spring.datasource.url
hozzá lett?serverTimezone=UTC
fűzve, hogy a JDBC-illesztő az UTC dátumformátumot (vagy az egyezményes világidőt) használja az adatbázishoz való csatlakozáskor. E paraméter nélkül a Java-kiszolgáló nem ugyanazt a dátumformátumot használná, mint az adatbázis, ami hibát eredményezne.
Hozzon létre egy új
Todo
Java-osztályt. Ez az osztály egy olyan tartománymodell, amely atodo
JPA által automatikusan létrehozott táblára van leképezve. Az alábbi kód figyelmen kívül hagyja a metódusokat éssetters
agetters
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; }
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
DefaultAzureCredential
az 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?
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, 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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: