Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tutorial demonstra como armazenar dados em Banco de Dados SQL do Azure usando Spring Data JDBC.
JDBC é a API de Java padrão para se conectar a bancos de dados relacionais tradicionais.
Neste tutorial, incluímos dois métodos de autenticação: autenticação Microsoft Entra e autenticação do Banco de Dados SQL. A guia Sem senha mostra a autenticação Microsoft Entra e a guia Senha mostra a autenticação do Banco de Dados SQL.
Autenticação do Microsoft Entra é um mecanismo para se conectar ao Banco de Dados SQL do Azure usando identidades definidas no Microsoft Entra ID. Com Microsoft Entra autenticação, você pode gerenciar identidades de usuário de banco de dados e outras serviços Microsoft em um local central, o que simplifica o gerenciamento 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 de usuários. Como essas senhas são armazenadas no Banco de Dados SQL, você precisa gerenciar a rotação das senhas por conta própria.
Pré-requisitos
Uma assinatura Azure – criar uma gratuitamente.
Java Development Kit (JDK), versão 8 ou superior.
Driver ODBC 17 ou 18.
Se você não tiver uma, crie uma instância de SQL Server do Azure chamada
sqlserverteste um banco de dados chamadodemo. Para obter instruções, consulte Quickstart: Criar um banco de dados único – Banco de Dados SQL do Azure.Se você não tiver um aplicativo do Spring Boot, crie um projeto do Maven com o Spring Initializr. Selecione Maven Project e, em Dependencies adicione as dependências Spring Web, Spring Data JDBC e MS SQL Server Driver e selecione Java versão 8 ou superior.
Consulte o aplicativo de exemplo
Neste tutorial, você codificará um aplicativo de exemplo. Se você quiser ir mais rápido, esse aplicativo já está codificado e disponível em https://github.com/Azure-Samples/quickstart-spring-data-jdbc-sql-server.
Configurar uma regra de firewall para o servidor Banco de Dados SQL do Azure
Banco de Dados SQL do Azure instâncias são protegidas por padrão. Elas têm um firewall que não permite nenhuma conexã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 obter mais informações, consulte Tutorial: proteger um banco de dados em Banco de Dados SQL do Azure.
Se você estiver se conectando ao servidor Banco de Dados SQL do Azure do Subsistema do Windows para Linux (WSL) em um computador Windows, precisará adicionar a ID do host WSL ao 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 banco de dados demo a ele.
Para usar conexões sem senha, consulte Tutorial: proteger um banco de dados em Banco de Dados SQL do Azure ou usar o Service Connector para criar um usuário administrador Microsoft Entra para o servidor Banco de Dados SQL do Azure, conforme mostrado nas seguintes etapas:
Primeiro, instale a extensão Service Connector sem senha para o CLI do Azure:
az extension add --name serviceconnector-passwordless --upgradeEm seguida, use o seguinte comando para criar o Microsoft Entra usuário não administrador:
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 Microsoft Entra administrador que você criou é um usuário administrador do banco de dados SQL, portanto, você não precisa criar um novo usuário.
Importante
As conexões sem senha do banco de dados SQL do Azure 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 de Banco de Dados SQL do Azure
Com uma instância de Banco de Dados SQL do Azure, você pode armazenar dados usando o Spring Cloud Azure.
Para instalar o módulo Spring Cloud Azure Starter, adicione as seguintes dependências ao arquivo pom.xml:
O Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Observação
Se você estiver usando o Spring Boot 4.0.x, defina a
spring-cloud-azure-dependenciesversão como7.2.0.Se você estiver usando o Spring Boot 3.5.x, defina a
spring-cloud-azure-dependenciesversão como6.2.0.Se você estiver usando o Spring Boot 3.1.x-3.5.x, defina a
spring-cloud-azure-dependenciesversão como5.25.0.Se você estiver usando o Spring Boot 2.x, certifique-se de definir a
spring-cloud-azure-dependenciesversão como4.20.0.Esta lista de materiais (BOM) deve ser configurada na
<dependencyManagement>seção do arquivo pom.xml. Isso garante que todas as dependências de Azure do Spring Cloud estejam usando a mesma versão.Para obter mais informações sobre a versão usada para este BOM, consulte Which Version of Spring Cloud Azure Should I Use.
O artefato Spring Cloud Azure Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>Observação
Como se trata de uma dependência, ela deve ser adicionada na seção
<dependencies>do pom.xml. Sua versão não está configurada aqui, pois é gerenciada pelo BOM que adicionamos anteriormente.
Configurar o Spring Boot para usar Banco de Dados SQL do Azure
Para armazenar dados de Banco de Dados SQL do Azure usando o Spring Data JDBC, siga estas etapas para configurar o aplicativo:
Configure as credenciais do banco de dados Azure SQL no arquivo 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 de configuração
spring.sql.init.mode=alwayssignifica que o Spring Boot vai gerar um esquema de banco de dados automaticamente, usando o arquivo schema.sql que você criará a seguir, toda vez que o servidor for iniciado. Isso é ótimo para testes, mas lembre-se de que isso excluirá os dados a cada reinicialização. Portanto, você não deve usá-la em produção.
Crie o arquivo de configuração src/main/resources/schema.sql para configurar o esquema do banco de dados e adicione o conteúdo a seguir.
DROP TABLE IF EXISTS todo; CREATE TABLE todo (id INT IDENTITY PRIMARY KEY, description VARCHAR(255), details VARCHAR(4096), done BIT);
Crie uma nova classe
TodoJava. Essa classe é um modelo de domínio mapeado para a tabelatodoque será criado automaticamente pelo Spring Boot. O código a seguir ignora os métodosgettersesetters.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 conteúdo a seguir.
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> { }Dica
Neste tutorial, não há operações de autenticação nas configurações ou no código. No entanto, conectar-se a serviços Azure requer autenticação. Para concluir a autenticação, você precisa usar Azure Identity. O Spring Cloud Azure usa
DefaultAzureCredential, que a biblioteca de identidades do Azure fornece para ajudá-lo a obter credenciais sem alterações de código.DefaultAzureCredentialdá suporte a vários métodos de autenticação e determina qual método usar no runtime. Essa abordagem habilita seu aplicativo a usar diferentes métodos de autenticação em diferentes ambientes, como ambientes locais e de produção, sem implementar código específico do ambiente. Para obter mais informações, consulte DefaultAzureCredential.Para concluir a autenticação em ambientes de desenvolvimento locais, você pode usar CLI do Azure, Visual Studio Code, PowerShell ou outros métodos. Para obter mais informações, consulte autenticação do Azure em ambientes de desenvolvimento Java. Para concluir a autenticação em ambientes de hospedagem Azure, recomendamos usar a identidade gerenciada atribuída pelo usuário. Para obter mais informações, consulte O que são identidades gerenciadas para recursos Azure?
Inicie o aplicativo. O aplicativo armazena dados no banco de dados. Você verá logs semelhantes ao seguinte exemplo:
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
Implantar no Aplicativos Spring do Azure
Agora que você tem o aplicativo Spring Boot em execução localmente, é hora de movê-lo para produção. Aplicativos Spring do Azure facilita a implantação de aplicativos Spring Boot para Azure sem alterações de código. O serviço gerencia a infraestrutura dos aplicativos do Spring para que os desenvolvedores possam se concentrar no código. Aplicativos Spring do Azure fornece gerenciamento de ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviço, integração de CI/CD, implantações azul-verde e muito mais. Para implantar seu aplicativo em Aplicativos Spring do Azure, consulte Deploy seu primeiro aplicativo para Aplicativos Spring do Azure.