Azure SQL Veritabanı ile Spring Data JPA kullanma
Bu öğreticide Spring Data JPA kullanarak verilerin Azure SQL Veritabanı nasıl depoladığı gösterilmektedir.
Java Kalıcılık API'si (JPA), nesne-ilişkisel eşleme için standart Java API'dir.
Bu öğreticide iki kimlik doğrulama yöntemi ekleyeceğiz: Microsoft Entra kimlik doğrulaması ve SQL Veritabanı kimlik doğrulaması. Parolasız sekmesi Microsoft Entra kimlik doğrulamasını, Parola sekmesi ise SQL Veritabanı kimlik doğrulamasını gösterir.
Microsoft Entra kimlik doğrulaması, Microsoft Entra Id'de tanımlanan kimlikleri kullanarak SQL Veritabanı için Azure Veritabanı'na bağlanmaya yönelik bir mekanizmadır. Microsoft Entra kimlik doğrulaması ile veritabanı kullanıcı kimliklerini ve diğer Microsoft hizmetleri merkezi bir konumda yönetebilir ve bu da izin yönetimini basitleştirir.
SQL Veritabanı kimlik doğrulaması, SQL Veritabanı depolanan hesapları kullanır. Hesapların kimlik bilgileri olarak parolaları kullanmayı seçerseniz, bu kimlik bilgileri kullanıcı tablosunda depolanır. Bu parolalar SQL Veritabanı depolandığından, parolaların döndürmesini kendiniz yönetmeniz gerekir.
Önkoşullar
Azure aboneliği - ücretsiz bir abonelik oluşturun.
Java Development Kit (JDK), sürüm 8 veya üzeri.
ODBC Sürücüsü 17 veya 18.
Yoksa adlı bir Azure SQL Server örneği ve adlı
sqlservertest
demo
bir veritabanı oluşturun. Yönergeler için bkz. Hızlı Başlangıç: Tek veritabanı oluşturma - Azure SQL Veritabanı.Spring Boot uygulamanız yoksa Spring Initializr ile bir Maven projesi oluşturun. Maven Projesi'ni seçtiğinizden ve Bağımlılıklar'ın altında Spring Web, Spring Data JPA ve MS SQL Server Driver bağımlılıklarını eklediğinizden emin olun ve ardından Java sürüm 8 veya üzerini seçin.
Önemli
Parolasız bağlantıları kullanmak için, MS SQL Server Sürücüsü'ne veya sonraki bir sürüme 12.1.0
yükseltin ve ardından Azure SQL Veritabanı sunucu örneğiniz için bir Microsoft Entra yönetici kullanıcısı oluşturun. Daha fazla bilgi için Öğretici: Azure SQL Veritabanı'da veritabanının güvenliğini sağlama makalesinin Microsoft Entra yöneticisi oluşturma bölümüne bakın.
Örnek uygulamaya bakın
Bu öğreticide örnek bir uygulama kodlayacaksınız. Daha hızlı gitmek istiyorsanız, bu uygulama zaten kodlanmış ve adresinde https://github.com/Azure-Samples/quickstart-spring-data-jpa-sql-serverkullanılabilir.
Azure SQL Veritabanı sunucunuz için güvenlik duvarı kuralı yapılandırma
Azure SQL Veritabanı örnekleri varsayılan olarak güvenlidir. Gelen bağlantılara izin vermeyen bir güvenlik duvarı vardır.
Veritabanınızı kullanabilmek için sunucunun güvenlik duvarını açarak yerel IP adresinin veritabanı sunucusuna erişmesine izin verin. Daha fazla bilgi için bkz. Öğretici: Azure SQL Veritabanı'da veritabanının güvenliğini sağlama.
Bir Windows bilgisayarda Linux için Windows Alt Sistemi 'den (WSL) Azure SQL Veritabanı sunucunuza bağlanıyorsanız, WSL ana bilgisayar kimliğini güvenlik duvarınıza eklemeniz gerekir.
Sql veritabanı yönetici olmayan kullanıcı oluşturma ve izin verme
Bu adım yönetici olmayan bir kullanıcı oluşturur ve veritabanındaki demo
tüm izinleri ona verir.
Parolasız bağlantıları kullanmak için öğretici: Aşağıdaki adımlarda gösterildiği gibi öğretici: Azure SQL Veritabanı veritabanının güvenliğini sağlama veya Azure SQL Veritabanı sunucunuz için Microsoft Entra yönetici kullanıcısı oluşturmak üzere Service Connector'ı kullanma:
İlk olarak, Azure CLI için Hizmet Bağlayıcısı parolasız uzantısını yükleyin:
az extension add --name serviceconnector-passwordless --upgrade
Ardından, Microsoft Entra yönetici olmayan kullanıcıyı oluşturmak için aşağıdaki komutu kullanın:
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
Oluşturduğunuz Microsoft Entra yöneticisi bir SQL veritabanı yöneticisi kullanıcısı olduğundan yeni bir kullanıcı oluşturmanız gerekmez.
Azure SQL Veritabanı verilerini depolama
Azure SQL Veritabanı örneğiyle Spring Cloud Azure'ı kullanarak verileri depolayabilirsiniz.
Spring Cloud Azure Starter modülünü yüklemek için pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:
Spring Cloud Azure Ürün Reçetesi (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.18.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Not
Spring Boot 2.x kullanıyorsanız, sürümünü olarak
4.19.0
ayarladığınızdanspring-cloud-azure-dependencies
emin olun. Bu Ürün Reçetesi (BOM), pom.xml dosyanızın bölümünde yapılandırılmalıdır<dependencyManagement>
. Bu, tüm Spring Cloud Azure bağımlılıklarının aynı sürümü kullanmasını sağlar. Bu ürün reçetesi için kullanılan sürüm hakkında daha fazla bilgi için bkz . Spring Cloud Azure'ın Hangi Sürümünü Kullanmalıyım.Spring Cloud Azure Starter yapıtı:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>
Not
Bu bir bağımlılık olduğundan, pom.xml bölümüne eklenmelidir
<dependencies>
. Sürümü, daha önce eklediğimiz ürün reçetesi tarafından yönetildiğinden burada yapılandırılmamıştır.
Spring Boot'ı Azure SQL Veritabanı kullanacak şekilde yapılandırma
Spring Data JPA kullanarak Azure SQL Veritabanı verilerini depolamak için uygulamayı yapılandırmak için şu adımları izleyin:
application.properties yapılandırma dosyasında Azure SQL Veritabanı kimlik bilgilerini yapılandırın.
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
Uyarı
spring.jpa.hibernate.ddl-auto=create-drop
yapılandırma özelliği, Spring Boot’un uygulama başlangıcında otomatik olarak bir veritabanı şeması oluşturacağı ve kapandığında bu şemayı silmeye çalışacağı anlamına gelir. Bu özellik test için harikadır, ancak her yeniden başlatmada verilerinizi sileceğini unutmayın; bu nedenle üretimde kullanmamalısınız.
Yeni
Todo
bir Java sınıfı oluşturun. Bu sınıf, JPA tarafından otomatik olarak oluşturulacak tabloyatodo
eşlenen bir etki alanı modelidir. Aşağıdaki kod vesetters
yöntemlerini yoksayargetters
.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; }
Aşağıdaki içeriği göstermek için başlangıç sınıfı dosyasını düzenleyin.
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> { }
İpucu
Bu öğreticide yapılandırmalarda veya kodda kimlik doğrulama işlemi yoktur. Ancak Azure hizmetlerine bağlanmak için kimlik doğrulaması gerekir. Kimlik doğrulamasını tamamlamak için Azure Identity kullanmanız gerekir. Spring Cloud Azure, azure kimlik kitaplığının herhangi bir kod değişikliği yapmadan kimlik bilgilerini almanıza yardımcı olmak için sağladığı öğesini kullanır
DefaultAzureCredential
.DefaultAzureCredential
birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim ortamları gibi) farklı kimlik doğrulama yöntemleri kullanmasını sağlar. Daha fazla bilgi için bkz . DefaultAzureCredential.Yerel geliştirme ortamlarında kimlik doğrulamasını tamamlamak için Azure CLI, Visual Studio Code, PowerShell veya diğer yöntemleri kullanabilirsiniz. Daha fazla bilgi için bkz . Java geliştirme ortamlarında Azure kimlik doğrulaması. Azure barındırma ortamlarında kimlik doğrulamasını tamamlamak için kullanıcı tarafından atanan yönetilen kimliği kullanmanızı öneririz. Daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler nelerdir?
Uygulamayı başlatın. Aşağıdaki örneğe benzer günlükler görürsünüz:
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
Azure Spring Apps'e dağıtma
Spring Boot uygulamasını yerel olarak çalıştırdığınıza göre artık uygulamayı üretim ortamına taşımanın zamanı geldi. Azure Spring Apps , kod değişikliği yapmadan Spring Boot uygulamalarını Azure'a dağıtmayı kolaylaştırır. Hizmet, geliştiricilerin kodlarına odaklanabilmesi için Spring uygulamalarının altyapısını yönetir. Azure Spring Apps kapsamlı izleme ve tanılama, yapılandırma yönetimi, hizmet bulma, CI/CD tümleştirmesi, mavi-yeşil dağıtımlar ve daha fazlasını kullanarak yaşam döngüsü yönetimi sağlar. Uygulamanızı Azure Spring Apps'e dağıtmak için bkz . İlk uygulamanızı Azure Spring Apps'e dağıtma.