Spring Data JPA’nın kalbinde Repository arayüzleri yatar ve bu arayüzlerin sağladığı metodlar, veritabanı işlemlerini oldukça kolay ve hızlı bir şekilde gerçekleştirmemizi sağlar. Bu yazımda, JpaRepository arayüzünün temel metodlarını uygulamalı örneklerle incelerken, aynı zamanda özel sorgu metotlarının nasıl tanımlanacağını ve kullanılacağını da göstereceğim.
Temel Repository Metotları ve Kullanımları
İlk olarak, basit bir User entity’mizi oluşturalım ve ardından UserRepository arayüzünü tanımlayalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // Constructors, getters, ve setters burada yer alacak. } @Repository public interface UserRepository extends JpaRepository<User, Long> { } |
save – Kayıt Ekleme ve Güncelleme
save metodu ile bir kullanıcı ekleyelim ve daha sonra bu kullanıcının bilgilerini güncelleyelim:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Kullanıcı oluşturma ve kaydetme User newUser = new User(); newUser.setName("John Doe"); newUser.setEmail("john.doe@example.com"); User savedUser = userRepository.save(newUser); // Veritabanına kaydedilen kullanıcı: {id: 1, name: "John Doe", email: "john.doe@example.com"} // Kullanıcıyı güncelleme savedUser.setName("John Updated"); userRepository.save(savedUser); // Veritabanına güncellenen kullanıcı: {id: 1, name: "John Updated", email: "john.doe@example.com"} |
findById – Bir Kaydı ID İle Bulma
Belirli bir id değerine sahip kullanıcıyı bulalım:
1 2 3 4 5 6 |
Optional<User> foundUser = userRepository.findById(1L); if (foundUser.isPresent()) { // Veritabanından gelen kullanıcı: {id: 1, name: "John Updated", email: "john.doe@example.com"} } |
findAll – Tüm Kayıtları Listeleme
Tüm kullanıcıları listeyelim:
1 2 3 4 5 |
List<User> users = userRepository.findAll(); // Veritabanından dönen kullanıcı listesi örneği: // [{id: 1, name: "John Updated", email: "john.doe@example.com"}, {id: 2, name: "Jane Doe", email: "jane@example.com"}] |
findAllById – Birden Fazla ID İçin Kayıtları Bulma
Belirli ID’ler ile eşleşen kullanıcıları getirelim:
1 2 3 4 5 |
List<Long> ids = Arrays.asList(1L, 2L); List<User> usersById = userRepository.findAllById(ids); // Veritabanından dönen kullanıcı listesi örneği: [{id: 1, name: "John Updated"}, {id: 2, name: "Jane Doe"}] |
count – Kayıt Sayısını Alma
Veritabanında kaç tane kullanıcı kaydı olduğunu sayalım:
1 2 3 4 |
long userCount = userRepository.count(); // Örneğin veritabanında 10 kullanıcı varsa, dönen sayı: 10 |
deleteById – ID İle Kayıt Silme
Belirli bir id ye sahip kullanıcıyı silelim:
1 2 3 4 |
userRepository.deleteById(1L); // Eğer işlem başarılıysa, ID'si 1 olan kullanıcı veritabanından silinecektir. |
existsById – Bir ID’nin Varlığını Kontrol Etme
Belirli bir id ye sahip kullanıcının var olup olmadığını kontrol edelim:
1 2 3 4 |
boolean doesExist = userRepository.existsById(1L); // Eğer kullanıcı mevcutsa true, değilse false döner. |
Özel Repository Metotları ve Kullanımları
Şimdi, UserRepository arayüzüne özel sorgu metotları ekleyelim:
1 2 3 4 5 6 7 |
@Repository public interface UserRepository extends JpaRepository<User, Long> { List<User> findByName(String name); List<User> findByEmailContaining(String domain); } |
Özel Sorgu Metodları ile Kullanıcı Bulma
Belirli bir isme sahip tüm kullanıcıları bulalım:
1 2 3 4 |
List<User> usersNamedJohn = userRepository.findByName("John"); // Veritabanından dönen liste: [{id: 1, name: "John", email: "john.doe@example.com"}] |
Email adresinde belirli bir alan adını içeren kullanıcıları bulalım:
1 2 3 4 5 |
List<User> usersWithGmail = userRepository.findByEmailContaining("@gmail.com"); // Veritabanından dönen liste örneği: // [{id: 3, name: "Alice Smith", email: "alice.smith@gmail.com"}] |
Bu örneklerle birlikte, JpaRepository tarafından sunulan bazı temel metodları ve repository’ye nasıl özel sorgu metotları ekleyebileceğinizi gördük. Bu yöntemler, geliştirme sürecini hızlandırmanın yanı sıra, kodun okunabilirliğini ve bakımını da kolaylaştırır. Her bir metot, arka planda Spring Data JPA tarafından otomatik olarak oluşturulan sorguları çalıştırarak, Java geliştiricisinin veritabanı üzerindeki iş yükünü azaltır.
Umarım “Spring Data JPA Repository Metodları” başlıklı yazım sizin için faydalı olmuştur.
Şu yazılar da ilginizi çekebilir.
Yeni bir yazımda görüşmek üzere.
Happy coding!