Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento kurz ukazuje, jak ukládat data ve službě Azure Database for PostgreSQL pomocí spring data JPA.
Rozhraní JAVA Persistence API (JPA) je standardní rozhraní Java API pro mapování relačních objektů.
V tomto kurzu zahrneme dvě metody ověřování: ověřování Microsoft Entra a ověřování PostgreSQL. Karta Bez hesla zobrazuje ověřování Microsoft Entra a karta Heslo zobrazuje ověřování PostgreSQL.
Ověřování Microsoft Entra je mechanismus pro připojení ke službě Azure Database for PostgreSQL pomocí identit definovaných v MICROSOFT Entra ID. Pomocí ověřování Microsoft Entra můžete spravovat identity uživatelů databáze a další služby Microsoft v centrálním umístění, což zjednodušuje správu oprávnění.
Ověřování PostgreSQL používá účty uložené v PostgreSQL. Pokud se rozhodnete používat hesla jako přihlašovací údaje pro účty, budou tyto přihlašovací údaje uloženy v user tabulce. Vzhledem k tomu, že tato hesla jsou uložená v PostgreSQL, musíte spravovat rotaci hesel sami.
Požadavky
Předplatné Azure – vytvořte si ho zdarma.
Java Development Kit (JDK) verze 8 nebo vyšší.
Pokud nemáte aplikaci Spring Boot, vytvořte projekt Maven pomocí aplikace Spring Initializr. Nezapomeňte vybrat projekt Maven a v části Závislosti přidejte závislosti Spring Web, Spring Data JDBC a PostgreSQL Driver a pak vyberte Javu verze 8 nebo vyšší.
- Pokud ho nemáte, vytvořte instanci flexibilního serveru Azure Database for PostgreSQL s názvem
postgresqlflexibletesta databázi s názvemdemo. Pokyny najdete v tématu Rychlý start: Vytvoření flexibilního serveru Azure Database for PostgreSQL na webu Azure Portal.
Důležité
Pokud chcete používat připojení bez hesla, nakonfigurujte uživatele správce Microsoft Entra pro instanci flexibilního serveru Azure Database for PostgreSQL. Další informace najdete v tématu Správa rolí Microsoft Entra na flexibilním serveru Azure Database for PostgreSQL.
Zobrazení ukázkové aplikace
V tomto kurzu naprogramujete ukázkovou aplikaci. Pokud chcete přejít rychleji, tato aplikace je již kódována a k dispozici na adrese https://github.com/Azure-Samples/quickstart-spring-data-jpa-postgresql.
Nakonfigurujte pravidlo brány firewall pro server PostgreSQL
Instance Azure Database for PostgreSQL jsou ve výchozím nastavení zabezpečené. Mají firewall, který nepovoluje žádné příchozí připojení.
Pokud chcete mít možnost používat databázi, otevřete bránu firewall serveru, aby místní IP adresa mohla přistupovat k databázovému serveru. Další informace najdete v pravidlech brány firewall v Azure Database for PostgreSQL - flexibilní server.
Pokud se připojujete k serveru PostgreSQL z Windows Subsystem pro Linux (WSL) na počítači s Windows, musíte do brány firewall přidat ID hostitele WSL.
Vytvoření uživatele PostgreSQL bez oprávnění správce a udělení oprávnění
Dále vytvořte uživatele bez oprávnění správce a udělte mu všechna oprávnění.
Následující metodu můžete použít k vytvoření uživatele bez administrátorských práv, který používá připojení bez zadávání hesla.
Pomocí následujícího příkazu nainstalujte rozšíření bez hesla konektoru služby pro Azure CLI:
az extension add --name serviceconnector-passwordless --upgradePomocí následujícího příkazu vytvořte uživatele Microsoft Entra bez oprávnění správce:
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 tsvPo dokončení příkazu si poznamenejte uživatelské jméno ve výstupu konzoly.
Ukládání dat ze služby Azure Database for PostgreSQL
Teď, když máte instanci flexibilního serveru Azure Database for PostgreSQL, můžete data ukládat pomocí Spring Cloud Azure.
Pokud chcete nainstalovat modul Spring Cloud Azure Starter JDBC PostgreSQL, přidejte do souboru pom.xml následující závislosti:
Soubor komponent „Spring Cloud Azure“ (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>Poznámka:
Pokud používáte Spring Boot 3.0.x-3.4.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na5.23.0.Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na4.20.0.Tato faktura materiálu (KUSOVNÍK) by měla být nakonfigurovaná v
<dependencyManagement>části souboru pom.xml . Tím se zajistí, že všechny závislosti Azure Spring Cloudu budou používat stejnou verzi.Další informace o verzi použité pro tento kusovník naleznete v tématu Jakou verzi Spring Cloud Azure mám použít.
Artefakt aplikace Spring Cloud Azure Starter JDBC pro PostgreSQL:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Poznámka:
Připojení bez hesla byla od verze 4.5.0podporována .
Konfigurace Spring Bootu pro použití Služby Azure Database for PostgreSQL
Pokud chcete ukládat data ze služby Azure Database for PostgreSQL pomocí spring data JPA, nakonfigurujte aplikaci pomocí následujícího postupu:
Nakonfigurujte přihlašovací údaje azure Database for PostgreSQL přidáním následujících vlastností do konfiguračního souboru application.properties .
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
- Pokud ho nemáte, vytvořte instanci jednoúčelového serveru Azure Database for PostgreSQL s názvem
postgresqlsingletesta databázi s názvemdemo. Pokyny najdete v tématu Rychlý start: Vytvoření serveru Azure Database for PostgreSQL pomocí webu Azure Portal.
Důležité
Pokud chcete používat připojení bez hesla, nakonfigurujte uživatele správce Microsoft Entra pro instanci jednoúčelového serveru Azure Database for PostgreSQL. Další informace naleznete v tématu Použití Microsoft Entra ID pro ověřování s PostgreSQL.
Zobrazení ukázkové aplikace
V tomto článku naprogramujete ukázkovou aplikaci. Pokud chcete přejít rychleji, tato aplikace je již kódována a k dispozici na adrese https://github.com/Azure-Samples/quickstart-spring-data-jpa-postgresql.
Nakonfigurujte pravidlo brány firewall pro server PostgreSQL
Instance Azure Database for PostgreSQL jsou ve výchozím nastavení zabezpečené. Mají firewall, který nepovoluje žádné příchozí připojení.
Pokud chcete mít možnost používat databázi, otevřete bránu firewall serveru, aby místní IP adresa mohla přistupovat k databázovému serveru. Další informace najdete v tématu Vytvoření a správa pravidel brány firewall pro jednoúčelový server Azure Database for PostgreSQL pomocí webu Azure Portal.
Pokud se připojujete k serveru PostgreSQL z Windows Subsystem pro Linux (WSL) na počítači s Windows, musíte do brány firewall přidat ID hostitele WSL.
Vytvoření uživatele PostgreSQL bez oprávnění správce a udělení oprávnění
Dále vytvořte uživatele bez oprávnění správce a udělte mu všechna oprávnění.
Následující metodu můžete použít k vytvoření uživatele bez administrátorských práv, který používá připojení bez zadávání hesla.
Pomocí následujícího příkazu nainstalujte rozšíření bez hesla konektoru služby pro Azure CLI:
az extension add --name serviceconnector-passwordless --upgradePomocí následujícího příkazu vytvořte uživatele Microsoft Entra bez oprávnění správce:
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 tsvPo dokončení příkazu si poznamenejte uživatelské jméno ve výstupu konzoly.
Ukládání dat ze služby Azure Database for PostgreSQL
Teď, když máte instanci jednoúčelového serveru Azure Database for PostgreSQL, můžete data ukládat pomocí Spring Cloud Azure.
Pokud chcete nainstalovat modul Spring Cloud Azure Starter JDBC PostgreSQL, přidejte do souboru pom.xml následující závislosti:
Soubor komponent „Spring Cloud Azure“ (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>Poznámka:
Pokud používáte Spring Boot 3.0.x-3.4.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na5.23.0.Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na4.20.0.Tato faktura materiálu (KUSOVNÍK) by měla být nakonfigurovaná v
<dependencyManagement>části souboru pom.xml . Tím se zajistí, že všechny závislosti Azure Spring Cloudu budou používat stejnou verzi.Další informace o verzi použité pro tento kusovník naleznete v tématu Jakou verzi Spring Cloud Azure mám použít.
Artefakt aplikace Spring Cloud Azure Starter JDBC pro PostgreSQL:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Poznámka:
Připojení bez hesla byla od verze 4.5.0podporována .
Konfigurace Spring Bootu pro použití Služby Azure Database for PostgreSQL
Pokud chcete ukládat data ze služby Azure Database for PostgreSQL pomocí spring data JPA, nakonfigurujte aplikaci pomocí následujícího postupu:
Nakonfigurujte přihlašovací údaje azure Database for PostgreSQL přidáním následujících vlastností do konfiguračního souboru application.properties .
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
Vytvořte novou
Todotřídu Java. Tato třída je doménový model mapovaný natodotabulku, která bude vytvořena automaticky JPA. Následující kód ignorujegettersmetody asettersmetody.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; }Upravte soubor spouštěcí třídy, aby se zobrazil následující obsah.
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> { }Nápověda
V tomto kurzu nejsou v konfiguracích ani kódu žádné ověřovací operace. Připojení ke službám Azure ale vyžaduje ověření. K dokončení ověřování je potřeba použít identitu Azure. Spring Cloud Azure používá
DefaultAzureCredential, kterou poskytuje knihovna identit Azure, která vám pomůže získat přihlašovací údaje bez jakýchkoli změn kódu.DefaultAzureCredentialpodporuje více metod ověřování a určuje, kterou metodu použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (například v místních a produkčních prostředích) bez implementace kódu specifického pro prostředí. Další informace naleznete v tématu DefaultAzureCredential.K dokončení ověřování v místních vývojových prostředích můžete použít Azure CLI, Visual Studio Code, PowerShell nebo jiné metody. Další informace najdete v tématu Ověřování Azure ve vývojových prostředích Java. K dokončení ověřování v hostitelských prostředích Azure doporučujeme použít spravovanou identitu přiřazenou uživatelem. Další informace najdete v tématu Co jsou spravované identity pro prostředky Azure?
Spusťte aplikaci. Zobrazí se protokoly podobné následujícímu příkladu:
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
Nasazujte do Azure Spring Apps
Teď, když máte aplikaci Spring Boot spuštěnou místně, je čas ji přesunout do produkčního prostředí. Azure Spring Apps usnadňuje nasazování aplikací Spring Boot do Azure bez jakýchkoli změn kódu. Služba spravuje infrastrukturu aplikací Spring, aby se vývojáři mohli soustředit na svůj kód. Azure Spring Apps poskytuje správu životního cyklu pomocí komplexního monitorování a diagnostiky, správy konfigurace, zjišťování služeb, integrace CI/CD, modrých zelených nasazení a dalších. Pokud chcete nasadit aplikaci do Azure Spring Apps, přečtěte si téma Nasazení první aplikace do Azure Spring Apps.