https://github.com/yunusemrenalbant/hibernate-optimistic-and-pessimistic-locking
Hibernate’in Pessimistic (Kötümser) ve Optimistic (İyimser) kilitleme stratejilerini Spring Boot tabanlı bir uygulama üzerinde nasıl kullanabileceğimizi gösteren bir örnek uygulamadır.
https://github.com/yunusemrenalbant/hibernate-optimistic-and-pessimistic-locking
hibernate java optimistic-locking pessimistic-locking spring
Last synced: about 2 months ago
JSON representation
Hibernate’in Pessimistic (Kötümser) ve Optimistic (İyimser) kilitleme stratejilerini Spring Boot tabanlı bir uygulama üzerinde nasıl kullanabileceğimizi gösteren bir örnek uygulamadır.
- Host: GitHub
- URL: https://github.com/yunusemrenalbant/hibernate-optimistic-and-pessimistic-locking
- Owner: YunusEmreNalbant
- Created: 2024-09-19T18:59:54.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-10-07T14:23:40.000Z (8 months ago)
- Last Synced: 2025-03-24T02:53:51.090Z (2 months ago)
- Topics: hibernate, java, optimistic-locking, pessimistic-locking, spring
- Language: Java
- Homepage:
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Hibernate Locking Stratejileri - Pessimistic ve Optimistic Locking Örneği
Bu proje, Hibernate’in **Pessimistic** (Kötümser) ve **Optimistic** (İyimser) kilitleme stratejilerini Spring Boot tabanlı bir uygulama üzerinde nasıl kullanabileceğimizi gösteren bir örnek uygulamadır. Veritabanı üzerinde eş zamanlı veri güncellemelerinin nasıl yönetildiğini ve veri tutarlılığının nasıl sağlandığını anlatmayı amaçlamaktadır.
## Proje Amacı
Veritabanı uygulamalarında, aynı verinin birden fazla işlem tarafından aynı anda değiştirilmesi durumu "yarış koşulları" (race conditions) ve veri tutarsızlığına yol açabilir. Bu sorunun çözümü için veritabanı işlemleri sırasında kilitleme (locking) stratejileri kullanılır. Hibernate, iki temel kilitleme stratejisini desteklemektedir:
- **Optimistic Locking**: Eş zamanlı güncellemelere izin verir, ancak veriyi güncellerken bir versiyon kontrolü ile işlemin başarılı olup olmadığını kontrol eder. Bu yaklaşımda kilit, verinin işlem sonunda kontrol edilmesiyle sağlanır.
- **Pessimistic Locking**: Güncellenen veriyi baştan kilitler ve diğer işlemlerin bu veriyi değiştirmesini engeller. Verinin kilidi, işlem süresi boyunca devam eder.
Bu projede, her iki kilitleme stratejisinin ne zaman, nasıl kullanılacağına dair örnekler ve kodlar yer almaktadır. Proje, özellikle çok kullanıcılı sistemlerde veri tutarlılığını sağlama ve yarış koşullarını önleme konularında Hibernate’in sunduğu çözümleri incelemek isteyen geliştiriciler için yararlı olacaktır.
## Proje İçeriği
- **Pessimistic Locking Örneği**: Veritabanı üzerinde satır bazlı kilitleme (row-level locking) mekanizması ile eş zamanlı veri güncellemelerinin nasıl yönetildiğini gösterir.
- **Optimistic Locking Örneği**: Veritabanında versiyon kontrolü ile kilitleme yapılmadan veri tutarlılığının nasıl sağlanacağını gösterir.## Çalıştırma
Proje standart Spring Boot uygulaması şeklinde çalıştırılabilir. Veritabanı konfigürasyonları için `application.properties` dosyasını düzenlemeniz yeterlidir.
## Detaylı Bilgi İçin
[Hibernate: Optimistic ve Pessimistic Locking Nedir?](https://medium.com/@yunusemrenalbant/hibernate-optimistic-ve-pessimistic-locking-nedir-9429c422ccbd)