Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tutorial demonstra como armazenar dados em Azure SQL Database usando Spring Data JDBC.
JDBC é a API Java padrão para se ligar a bases de dados relacionais tradicionais.
Neste tutorial, incluímos dois métodos de autenticação: autenticação Microsoft Entra e autenticação por base de dados SQL. O separador Sem Palavra-passe mostra a autenticação Microsoft Entra e o separador Palavra-passe mostra a autenticação da base de dados SQL.
A autenticação Microsoft Entra é um mecanismo de ligação à Azure Database for SQL Database utilizando identidades definidas no Microsoft Entra ID. Com a autenticação Microsoft Entra, pode gerir as identidades dos utilizadores da base de dados e outros serviços Microsoft numa localização central, o que simplifica a gestão de permissões.
A autenticação do Banco de dados SQL usa contas armazenadas no Banco de dados SQL. Se você optar por usar senhas como credenciais para as contas, essas credenciais serão armazenadas na tabela do usuário. Como essas senhas são armazenadas no Banco de dados SQL, você precisa gerenciar a rotação das senhas sozinho.
Pré-requisitos
Uma subscrição do Azure - crie uma gratuitamente.
Java Development Kit (JDK), versão 8 ou superior.
Driver ODBC 17 ou 18.
Se não tiveres nenhuma, cria uma instância Azure SQL Server chamada
sqlserverteste uma base de dados chamadademo. Para instruções, veja Quickstart: Criar uma base de dados única - Azure SQL Database.Se você não tiver um aplicativo Spring Boot, crie um projeto Maven com o Spring Initializr. Certifique-se de selecionar Maven Project e, em dependências Dependencies, adicionar as dependências Spring Web, Spring Data JDBC e MS SQL Server Driver, e depois selecione Java versão 8 ou superior.
Veja o aplicativo de exemplo
Neste tutorial, você codificará um aplicativo de exemplo. Se quiseres ir mais rápido, esta aplicação já está codificada e disponível em https://github.com/Azure-Samples/quickstart-spring-data-jdbc-sql-server.
Configure uma regra de firewall para o seu servidor Azure SQL Database
As instâncias do Azure SQL Database são seguras por defeito. Eles têm uma firewall que não permite nenhuma ligação de entrada.
Para poder usar seu banco de dados, abra o firewall do servidor para permitir que o endereço IP local acesse o servidor de banco de dados. Para mais informações, consulte Tutorial: Proteger uma base de dados em Azure SQL Database.
Se estiver a ligar-se ao seu servidor Azure SQL Database a partir do Windows Subsystem for Linux (WSL) num computador Windows, precisa de adicionar o ID do host WSL ao seu firewall.
Criar um usuário não administrador do banco de dados SQL e conceder permissão
Esta etapa criará um usuário não administrador e concederá todas as permissões no demo banco de dados a ele.
Para usar ligações sem palavra-passe, consulte Tutorial: Proteja uma base de dados em Azure SQL Database ou use o Service Connector para criar um utilizador administrador Microsoft Entra para o seu servidor Azure SQL Database, conforme mostrado nos passos seguintes:
Primeiro, instale a extensão sem palavra-passe Service Connector para o Azure CLI:
az extension add --name serviceconnector-passwordless --upgradeDepois, use o seguinte comando para criar o utilizador não administrador do Microsoft Entra:
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
O administrador da Microsoft Entra que criaste é um utilizador administrador de base de dados SQL, por isso não precisas de criar um novo utilizador.
Importante
As ligações sem password à base de dados Azure SQL exigem a atualização do Driver MS SQL Server para a versão 12.1.0 ou superior. A opção de conexão está authentication=DefaultAzureCredential na versão 12.1.0 e authentication=ActiveDirectoryDefault na versão 12.2.0.
Armazenar dados do Azure SQL Database
Com uma instância do Azure SQL Database, pode armazenar dados usando o Spring Cloud Azure.
Para instalar o módulo Spring Cloud Azure Starter, adicione as seguintes dependências ao seu ficheiro pom.xml:
A Lista de Materiais Spring Cloud Azure (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Nota
Se estiveres a usar o Spring Boot 4.0.x, certifica-te de definir a
spring-cloud-azure-dependenciesversão para7.1.0.Se estiveres a usar o Spring Boot 3.5.x, certifica-te de definir a
spring-cloud-azure-dependenciesversão para6.1.0.Se estiveres a usar o Spring Boot 3.1.x-3.5.x, certifica-te de definir a
spring-cloud-azure-dependenciesversão para5.25.0.Se você estiver usando o Spring Boot 2.x, certifique-se de definir a versão
spring-cloud-azure-dependenciescomo4.20.0.Esta lista de materiais (BOM) deve ser configurada na seção
<dependencyManagement>do seu arquivo pom.xml. Isto garante que todas as dependências do Spring Cloud Azure usam a mesma versão.Para mais informações sobre a versão usada nesta BOM, consulte Qual Versão do Spring Cloud Azure Devo Usar.
O artefato Spring Cloud Azure Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>Nota
Como se trata de uma dependência, ela deve ser adicionada na
<dependencies>seção do pom.xml. A sua versão não está configurada aqui, pois é gerida pelo BOM (lista técnica) que adicionámos anteriormente.
Configurar o Spring Boot para usar o Azure SQL Database
Para armazenar dados do Azure SQL Database usando o Spring Data JDBC, siga estes passos para configurar a aplicação:
Configure as credenciais da Base de Dados SQL do Azure no ficheiro de configuração application.properties.
logging.level.org.springframework.jdbc.core=DEBUG spring.datasource.url=jdbc:sqlserver://sqlservertest.database.windows.net:1433;databaseName=demo;authentication=DefaultAzureCredential; spring.sql.init.mode=alwaysAviso
A propriedade
spring.sql.init.mode=alwaysconfiguration significa que o Spring Boot gerará automaticamente um esquema de banco de dados, usando o arquivo schema.sql que você criará em seguida, sempre que o servidor for iniciado. Isso é ótimo para testes, mas lembre-se de que isso excluirá seus dados a cada reinicialização, portanto, você não deve usá-los na produção.
Crie o arquivo de configuração src/main/resources/schema.sql para configurar o esquema do banco de dados e adicione o seguinte conteúdo.
DROP TABLE IF EXISTS todo; CREATE TABLE todo (id INT IDENTITY PRIMARY KEY, description VARCHAR(255), details VARCHAR(4096), done BIT);
Cria uma nova classe
TodoJava. Esta classe é um modelo de domínio mapeado na tabelatodoque será criada automaticamente pelo Spring Boot. O código a seguir ignora osgettersmétodos esetters.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; }Edite o arquivo de classe de inicialização para mostrar o seguinte conteúdo.
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> { }Gorjeta
Neste tutorial, não há operações de autenticação nas configurações ou no código. No entanto, a ligação aos serviços do Azure requer autenticação. Para completar a autenticação, precisa de usar o Azure Identity. O Spring Cloud Azure utiliza
DefaultAzureCredential, que a biblioteca Azure Identity fornece para te ajudar a obter credenciais sem quaisquer alterações de código.DefaultAzureCredentialSuporta vários métodos de autenticação e determina qual método usar em tempo de execução. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (como ambientes locais e de produção) sem implementar código específico do ambiente. Para obter mais informações, consulte DefaultAzureCredential.Para completar a autenticação em ambientes de desenvolvimento locais, pode usar Azure CLI, Visual Studio Code, PowerShell ou outros métodos. Para mais informações, consulte Autenticação do Azure em ambientes de desenvolvimento Java. Para completar a autenticação em ambientes de alojamento Azure, recomendamos a utilização da identidade gerida atribuída pelo utilizador. Para mais informações, consulte O que são identidades geridas para Azure recursos?
Inicie a aplicação. O aplicativo armazena dados no banco de dados. Você verá logs semelhantes ao exemplo a seguir:
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
Desdobrar para o Azure Spring Apps
Agora que você tem o aplicativo Spring Boot em execução localmente, é hora de movê-lo para a produção. Azure Spring Apps facilita a implementação de aplicações Spring Boot para Azure sem quaisquer alterações de código. O serviço gerencia a infraestrutura dos aplicativos Spring para que os desenvolvedores possam se concentrar em seu código. O Azure Spring Apps oferece gestão do ciclo de vida através de monitorização e diagnóstico abrangentes, gestão de configuração, descoberta de serviços, integração CI/CD, implementações azul-verde e muito mais. Para implementar a sua aplicação para Azure Spring Apps, consulte Implante a sua primeira aplicação para Azure Spring Apps.