Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Spring Boot

Spring Boot Dersleri – Çoklu Veritabanları İle Çalışmak (Spring Data)

Paylaş

Spring Boot Dersleri‘ne devam ediyoruz.

Spring Boot uygulamlarımızda birden fazla farklı veritabanları ile nasıl çalışır, farklı veritabanlarına nasıl bağlanılır bir örnek ile açıklayacağım. Birden fazla veritabanına bağlanma işlemi aslında Spring Data’nın özelliğidir ancak asıl amacım bu özelliğin Spring Boot uygulamasında nasıl çalıştığını ve eklendiğini anlatmak.

Yapacağımız örnekte iki farklı veritabanımız olacak ve Spring Data özelliklerinden faydalanarak bağlanabileceğiz. Yapacağımız Spring Boot uygulaması örneğinde 2 farklı veritabanına bağlanacağız biri Mysql diğeri ise PostgreSQL olacak.

Maven bağımlılığımızı ekleyelim.

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> </dependencies>
Code language: HTML, XML (xml)

Veritabanı bağlantısını bilgilerini tanımlamak için application.properties dosyasına bilgileri yazalım.

# POSTGRESQL spring.postgresql.datasource.url=jdbc:postgresql://localhost:5432/ogrenci spring.postgresql.datasource.username=postgres spring.postgresql.datasource.password= spring.postgresql.datasource.driver-class-name=org.postgresql.Driver # MYSQL spring.mysql.datasource.url=jdbc:mysql://localhost:3306/ogretmen?autoReconnect=true&useSSL=false spring.mysql.datasource.username=root spring.mysql.datasource.password= spring.mysql.datasource.driver-class-name=com.mysql.jdbc.Driver

Veritabanı bağlantı bilgilerimizi doldurduk.

Şimdi proje yapımızı aşağıdaki şekilde oluşturacağız.

src/main/java - com.ogretmenogrenci - ogretmen - domain - repo - ogrenci - domain - repo

Sonrasında ise Öğretmen veritabanımızı için konfigürasyonlarımı her iki veritabanımız için de yapacağız.

Öğretmen veritabanı ayarlarımızı yapalım.

@Configuration @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef = "entityManagerFactory", basePackages = { "com.ogretmenogrenci.ogretmen.repo" } ) public class ogretmenDbConfig { @Primary @Bean(name = "dataSource") @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean(name = "entityManagerFactory") public LocalContainerEntityManagerFactoryBean entityManagerFactory( EntityManagerFactoryBuilder builder, @Qualifier("dataSource") DataSource dataSource ) { return builder .dataSource(dataSource) .packages("com.ogretmenogrenci.ogretmen.domain") .persistenceUnit("ogretmen") .build(); } @Primary @Bean(name = "transactionManager") public PlatformTransactionManager transactionManager( @Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory ) { return new JpaTransactionManager(entityManagerFactory); } }
Code language: PHP (php)

Öğrenci veritabanı ayarlamaları yapalım.

@Configuration @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef = "entityManagerFactory", basePackages = { "com.ogrenciogrenci.ogrenci.repo" } ) public class ogrenciDbConfig { @Primary @Bean(name = "dataSource") @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean(name = "entityManagerFactory") public LocalContainerEntityManagerFactoryBean entityManagerFactory( EntityManagerFactoryBuilder builder, @Qualifier("dataSource") DataSource dataSource ) { return builder .dataSource(dataSource) .packages("com.ogrenciogrenci.ogrenci.domain") .persistenceUnit("ogrenci") .build(); } @Primary @Bean(name = "transactionManager") public PlatformTransactionManager transactionManager( @Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory ) { return new JpaTransactionManager(entityManagerFactory); } }
Code language: PHP (php)

Veritabanı entitylerimizi yapalım.

@Entity @Table(name = "Ogretmen") public class Ogretmen { @Id @GeneratedValue @Column(name = "ID") private Long id; @Column(name = "ad") private String ad; . . }
Code language: CSS (css)
@Entity @Table(name = "Ogrenci") public class Ogrenci { @Id @GeneratedValue @Column(name = "ID") private Long id; @Column(name = "ad") private String ad; . . }
Code language: CSS (css)

Repositoryimizi oluşturmamız gerekiyor. Bu repository sayesinde sql sorgularımızı entityler aracılığı ile yazabilmekteyiz.

@Repository public interface OgretmenRepository extends JpaRepository<Ogretmen, Long> { Ogretmen findById(Long id); }
Code language: PHP (php)
@Repository public interface OgrenciRepository extends JpaRepository<Ogrenci, Long> { Ogrenci findById(Long id); }
Code language: PHP (php)

Controllerimizi oluşturalım. Controllerimiz iki veritabanından tüm bilgileri çekelim.

@RestController public class OgretmenOgrenciController { private final OgretmenRepository ogretmen; private final OgrenciRepository ogrenci; @Autowired OgretmenOgrenciController(OgretmenRepository ogretmen, OgrenciRepository ogrenci) { this.ogretmen = ogretmen; this.ogrenci = ogrenci; } @RequestMapping("/ogretmenogrenci/{id}") public String ogretmenogrenci(@PathVariable("id") Long id) { Ogretmen ogretmen = ogretmen.findById(id); Ogrenci ogrenci = ogrenci.findById(id); return ogretmen.getOgretmen() + " " + ogrenci.getOgrenci(); } }
Code language: PHP (php)

Önceki Ders:
RabbitMQ Dersleri
Sonraki Ders:  RabbitMQ Java Publisher Uygulaması

Tags:

spring boot applicationspring boot derslerispring boot uygulamaspring çoklu veritabanı uygulama örneğispring dataspring data çoklu bağlanmaspring dersleri

Paylaş

Diğer Yazılar

Postgre Sql Eğitimi Devrim Gündüz
Previous

PostgreSQL’de Wal, Replikasyon ve Yedekleme Semineri – (Devrim Gündüz) Notlarım

Spring Dersleri
Next

Spring Boot Uygulamalarında Security Basic Authentication Kullanım Örneği

Next
Spring Dersleri
06 Kasım 2019

Spring Boot Uygulamalarında Security Basic Authentication Kullanım Örneği

Previews
24 Ekim 2019

PostgreSQL’de Wal, Replikasyon ve Yedekleme Semineri – (Devrim Gündüz) Notlarım

Postgre Sql Eğitimi Devrim Gündüz

One Comment

  1. Murat YILDIRIM dedi ki:
    22 Kasım 2021, 09:23

    return builder
    .dataSource(dataSource)
    .packages(“com.ogretmenogrenci.ogretmen.domain”)
    .persistenceUnit(“ogretmen”)
    .build();

    burada ki persistenceUnit ismini nereden alıyoruz acaba

    Cevapla

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Spring Boot Dersleri

Spring Boot Projelerinde Tomcat Yerine Jetty Kullanmak

Spring Boot Dersleri Rest Template

Spring Boot RestTemplate Nedir ve Kullanımı

Spring Boot Dersleri

Spring Boot Transaction, Isolation, Propagation ve RollBack

Spring Boot Dersleri

Spring Boot Projelerinde Jackson Kullanımı

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Redis
Röportaj
Spring Data
Spring Cloud Stream
XCode
Debezium
Mikroservis Mimarisi
Video
Spring Native
iPhone Uygulama Geliştirme
Objective C
JPA
Spring Security
PostgreSQL
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
RabbitMQ
PrimeFaces
JDBC
Spring Jdbc Template
Spring
Spring MVC
Manset
Google
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Veritabanı
Tanıyalım
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale