Spring Boot CRUD: READ (Veri Okuma ve Listeleme) İşlemi

İngilizce'ye Geç
Kısa Özet: Spring Boot'ta Veriler Nasıl Listelenir?

Spring Boot uygulamasında veritabanındaki kayıtları okumak (READ) için Spring Data JPA'nın sunduğu findAll() veya findById() metotları kullanılır. Controller katmanında @GetMapping anotasyonu ile bir endpoint oluşturulur ve Service katmanından çekilen veriler istemciye JSON formatında (tercihen 200 OK durum koduyla) döndürülür.

Bu rehberde Spring Boot CRUD operasyonlarından Read (veri okuma) işlemini modern standartlara uygun şekilde nasıl gerçekleştirebileceğinizi adım adım öğreneceksiniz.

CRUD Serisi İç Bağlantıları: Diğer veritabanı operasyonlarını incelemek isterseniz aşağıdaki rehberlerimize göz atabilirsiniz:

1. Spring Boot Proje Mimarisi

Modern ve sürdürülebilir Spring Boot uygulamalarında "Spaghetti Code" yazmamak için kodlar katmanlara ayrılır:

  • Entity (Model): Veritabanı tablolarını temsil eder.
  • Repository: Veritabanı ile doğrudan iletişim kuran (SQL sorgularını yöneten) katmandır.
  • Service: Tüm iş kurallarının (Business Logic) yazıldığı ana beyindir.
  • Controller: Frontend, Mobil veya dış istemcilere API uçlarını (Endpoint) açar.

2. Model (Entity) Oluşturma

İlk olarak veritabanındaki users tablosuna karşılık gelen User entity sınıfımızı oluşturuyoruz. Kod kalabalığını önlemek için Lombok, modern Spring Boot 3 standartlarına uymak için ise jakarta.persistence kütüphanesini kullanıyoruz.

package com.example.demo.model;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "users")
@Getter
@Setter
@NoArgsConstructor
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    
    private String email;
}

3. Repository Katmanı

Veritabanı işlemleri için UserRepository interface'ini oluşturuyoruz. JpaRepository'i miras alarak tüm okuma (SELECT) metotlarına ücretsiz sahip olacağız.

package com.example.demo.repository;

import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // JpaRepository sayesinde findAll(), findById() gibi metotlar otomatik gelir.
}

4. Service Katmanı (İş Mantığı)

Veriyi doğrudan Controller üzerinden çekmek yerine araya bir Service katmanı koyuyoruz. Bu, ileride verileri listelemeden önce filtreleme veya dönüştürme (DTO mapping) yapmak isterseniz uygulamanızı koruyacaktır.

package com.example.demo.service;

import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@RequiredArgsConstructor
public class UserService {

    private final UserRepository userRepository;

    public List<User> getAllUsers() {
        // Veritabanındaki tüm kullanıcıları liste halinde döner
        return userRepository.findAll();
    }
}

5. Controller Katmanı (GET Endpoint)

Dış dünyadan gelen HTTP isteklerini karşılamak için UserController sınıfını yazıyoruz. Veri okuma işlemleri her zaman GET metodu (@GetMapping) ile yapılmalıdır.

package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @GetMapping
    public ResponseEntity<List<User>> getAllUsers() {
        List<User> users = userService.getAllUsers();
        return ResponseEntity.ok(users); // 200 OK durumu ile JSON döner
    }
}

6. PostgreSQL Veritabanı Bağlantısı

Uygulamanın veritabanına bağlanabilmesi için src/main/resources/application.properties dosyasına aşağıdaki ayarları ekleyin.

spring.datasource.url=jdbc:postgresql://localhost:5432/databaseAdi
spring.datasource.username=postgres
spring.datasource.password=sifre

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

7. API Test Etme

Uygulamayı çalıştırdıktan sonra tarayıcınızdan veya Postman gibi bir araçtan aşağıdaki URL'ye bir GET isteği göndererek verileri listeleyebilirsiniz:

http://localhost:8080/api/users

Eğer veritabanınızda daha önceden eklenmiş veriler varsa, bu endpoint size tüm kullanıcıların bilgisini temiz bir JSON dizisi olarak döndürecektir.

Sonuç

Bu yazıda Spring Boot CRUD işlemlerinden Read operasyonunu, modern best-practice'lere (Lombok, Constructor Injection, Service katmanı) uygun olarak katmanlı mimaride başarıyla gerçekleştirdik.

Veri ekleme ve silme süreçlerini merak ediyorsanız CREATE ve DELETE rehberlerimizi incelemeyi unutmayın!

Etiketler: spring boot crud, spring boot read, spring boot jpa, spring boot rest api

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Güncel yazılım teknolojilerinin takip edildiği blog.

Spring Boot ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *