DEV Community

Mustafa  Çam
Mustafa Çam

Posted on

spring data jdbc

Spring Data JDBC, Spring Framework'ün bir modülü olup, JDBC tabanlı veritabanı erişimini daha modern ve basit bir şekilde gerçekleştirmek için kullanılır. Spring Data JDBC, Spring Data'nın prensiplerini kullanarak veri erişimini daha kolay ve yönetilebilir hale getirir, ancak ORM araçlarının aksine doğrudan JDBC ile çalışır.

Spring Data JDBC'nin Temel Özellikleri

  1. Basit ve Doğrudan Erişim: Spring Data JDBC, ORM (Object-Relational Mapping) araçlarının karmaşıklığından kaçınarak doğrudan veritabanı işlemlerini gerçekleştirir.
  2. Repository Temelli: Spring Data'nın sunduğu CrudRepository ve PagingAndSortingRepository arayüzlerini kullanarak veri erişim katmanını oluşturur.
  3. Anotasyonlar: Entity tanımları için basit anotasyonlar kullanır (@Table, @Id, @Column, vb.).
  4. Kolay Konfigürasyon: Spring Boot ile entegre çalışarak otomatik konfigürasyon sağlar.

Spring Data JDBC Kullanarak Veritabanı İşlemleri

Aşağıda, Spring Data JDBC kullanarak bir veritabanı bağlantısının nasıl kurulacağını ve veri işlemlerinin nasıl yapılacağını gösteren bir örnek bulunmaktadır.

Maven Bağımlılıkları

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>
Enter fullscreen mode Exit fullscreen mode

Uygulama Özellikleri (application.properties)

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.h2.console.enabled=true
spring.datasource.initialize=true
spring.jpa.hibernate.ddl-auto=update
Enter fullscreen mode Exit fullscreen mode

Entity Sınıfı (Employee.java)

import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.Table;

@Table("employees")
public class Employee {

    @Id
    private Long id;
    private String name;
    private int age;

    // Getter ve Setter metodları

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
Enter fullscreen mode Exit fullscreen mode

Repository Arayüzü (EmployeeRepository.java)

import org.springframework.data.repository.CrudRepository;

public interface EmployeeRepository extends CrudRepository<Employee, Long> {
}
Enter fullscreen mode Exit fullscreen mode

Service Sınıfı (EmployeeService.java)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class EmployeeService {

    @Autowired
    private EmployeeRepository employeeRepository;

    public Employee saveEmployee(Employee employee) {
        return employeeRepository.save(employee);
    }

    public Iterable<Employee> getAllEmployees() {
        return employeeRepository.findAll();
    }
}
Enter fullscreen mode Exit fullscreen mode

Controller Sınıfı (EmployeeController.java)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/employees")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @PostMapping
    public Employee createEmployee(@RequestBody Employee employee) {
        return employeeService.saveEmployee(employee);
    }

    @GetMapping
    public Iterable<Employee> getAllEmployees() {
        return employeeService.getAllEmployees();
    }
}
Enter fullscreen mode Exit fullscreen mode

Spring Boot Uygulaması (SpringDataJdbcApplication.java)

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringDataJdbcApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringDataJdbcApplication.class, args);
    }
}
Enter fullscreen mode Exit fullscreen mode

Açıklamalar

  1. Bağımlılıklar: Spring Boot starter'ları ve H2 veritabanı bağımlılıkları tanımlanmıştır.
  2. Uygulama Özellikleri: H2 veritabanı için bağlantı bilgileri ve diğer yapılandırmalar yapılmıştır.
  3. Entity Sınıfı: Employee sınıfı, veritabanı tablosu ile eşleştirilmiştir. @Table ve @Id anotasyonları kullanılmıştır.
  4. Repository Arayüzü: EmployeeRepository arayüzü, Spring Data'nın CrudRepository arayüzünü genişleterek temel CRUD işlemlerini sağlar.
  5. Service Sınıfı: EmployeeService sınıfı, iş mantığını içerir ve EmployeeRepository'i kullanarak veri işlemlerini gerçekleştirir.
  6. Controller Sınıfı: EmployeeController sınıfı, RESTful API uç noktalarını tanımlar.
  7. Spring Boot Uygulaması: SpringDataJdbcApplication sınıfı, Spring Boot uygulamasını başlatır.

Bu yapı, Spring Data JDBC kullanarak basit ve etkili bir veri erişim katmanı oluşturmanızı sağlar. CRUD işlemleri için gereken kod miktarını azaltır ve veri erişimini daha yönetilebilir hale getirir.

Top comments (0)