Object-Relational Mapping (ORM), modern uygulamalarda veritabanı işlemlerini basitleştirir. Bu kılavuzda, Spring Boot ve Gin çerçevesini kullanarak PostgreSQL ile ORM nasıl kurulacağını öğreneceksiniz.
Yazan
Şuayb Şimşek
Spring Boot, güvenlik, mikroservis ve cloud-native mimari konularında pratik teknik notlar paylaşan backend odaklı fullstack geliştirici.
Yeni yazılar yayınlandığında pratik backend ve fullstack notlarını al.
Sosyal
🌟 Neden ORM Kullanmalıyız?
ORM, nesne yönelimli programlama ile ilişkisel veritabanları arasındaki boşluğu kapatarak nesneleri doğrudan veritabanı tablolarına eşler. Bu, manuel SQL sorgularına olan ihtiyacı ortadan kaldırır, hataları azaltır ve geliştiricilerin verimliliğini artırır.
📋 Gereksinimler
📜 Şunlara sahip olduğunuzdan emin olun:
☕ Java Geliştirme Kiti (JDK) 17+
📦 Maven veya Gradle kurulu
🔤 Bir Java IDE
🐘 PostgreSQL kurulu ve çalışır durumda
Go için:
🔧 Golang 1.17+ kurulu
🔄 Projenizde go.mod başlatılmış
🛠️ Adım 1: Bağımlılıkları Ekleme
Spring Boot projesi kurmak ve ORM entegrasyonu sağlamak için şu adımları izleyin:
Bağımlılıkları Ekleme
Spring Boot projeleri için aşağıdaki bağımlılıkları projenize ekleyin:
Henüz yapmadıysanız, Spring Initializr kullanarak projenizi oluşturun:
Spring Web, Spring Data JPA ve PostgreSQL Driver bağımlılıklarını seçin.
Projeyi indirin ve tercih ettiğiniz IDE'ye aktarın.
Go projeleri için:
Gin Çerçevesini ve GORM'u Kurun:
BASH
# Gin çerçevesini kurun
go get -u github.com/gin-gonic/gin
# GORM PostgreSQL sürücüsünü kurun
go get -u gorm.io/driver/postgres
# GORM ORM kütüphanesini kurun
go get -u gorm.io/gorm
🛠️ Adım 2: Modeli Tanımlayın ve REST Controller Uygulayın
Bu adım, entity/model, repository ve REST controller oluşturulmasını birleştirir.
▶️ Uygulamaları Çalıştırma
Bu bölümde Uygulamaları Çalıştırma konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.
Spring Boot:
BASH
./mvnw spring-boot:run
Gin:
BASH
go run main.go
🧪 cURL ile Test Etme
API'yi aşağıdaki cURL komutları ile test edebilirsiniz:
Artık Object-Relational Mapping için üretim odaklı bir Spring Boot temeliniz var. Sonraki adımda ayarları kendi domainine uyarlayıp test ve gözlemlenebilirlik katmanını ekleyerek gerçek trafik altında doğrulayın.
Entity
JAVAUser.java
package com.example.demo.entity;
import jakarta.persistence.*;
import lombok.Data;
@Data
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
}
package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class UserController {
private final UserRepository userRepository;
@GetMapping
public List<User> getAllUsers() {
return userRepository.findAll();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
}
Entity
KOTLINUser.kt
package com.example.demo.entity
import jakarta.persistence.*
@Entity
class User(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long = 0,
var name: String,
var email: String
)