📚 SmartLibraryPlus - Akıllı Kütüphane Yönetim Sistemi
BIP2037 Nesneye Dayalı Programlama II - Final Projesi
👤 Öğrenci Bilgileri
Ad Soyad: Gökçen ÇİFTCİ
Öğrenci No: 20230108016
Öğretim Üyesi: Emrah SARIÇİÇEK
Teslim Tarihi: 09.01.2026
🎯 Projenin Amacı ve Kapsamı
Bu proje, sürdürülebilir bir kütüphane yönetim altyapısı sağlamak amacıyla Hibernate ORM (Object-Relational Mapping) mimarisi üzerine inşa edilmiştir. Uygulama, fiziksel veri tabanı işlemlerini Java nesneleri üzerinden yürüterek veri tutarlılığını ve kodun okunabilirliğini en üst seviyeye çıkarmayı hedefler.
🛠️ Teknolojik Altyapı
Proje, modern Java standartları ve en güncel kütüphaneler kullanılarak geliştirilmiştir:
Teknoloji, Versiyon, Kullanım Amacı
Java,17 (LTS), Temel Programlama Dili
Hibernate ORM, 6.4.1.Final, Veri Tabanı İlişkilendirme ve Yönetimi
SQLite JDBC, 3.44.1.0, Yerel Veri Tabanı Motoru
Maven,3.x, Bağımlılık ve Proje Yönetimi
Jakarta Persistence, API, Annotation Tabanlı Mapping Standartları
🔗 Veri Modeli ve İlişkisel Yapı (Entity Management)
Proje kapsamında hocamızın belirlediği zorunlu ilişkisel yapılar, JPA Anotasyonları kullanılarak aşağıdaki şekilde kurgulanmıştır:
- Entity İlişkileri Student ↔ Loan (@OneToMany): Bir öğrenci birden fazla kitabı farklı zamanlarda ödünç alabilir. cascade = CascadeType.ALL ve orphanRemoval = true parametreleri ile veri bütünlüğü sağlanmıştır.
Loan ↔ Book (@OneToOne): Her ödünç kaydı, o an için tek bir kitaba aittir. unique = true kısıtı ile bir kitabın aynı anda mükerrer ödünç verilmesi veritabanı seviyesinde engellenmiştir.
- Zorunlu Sınıflar Book: Kitap bilgilerini ve status (AVAILABLE/BORROWED) durumunu saklar.
Student: Öğrenci kimlik ve bölüm bilgilerini tutar.
Loan: Ödünç alma ve iade tarihlerini, kitap ve öğrenci arasındaki köprüyü yönetir.
🗄️ Veri Erişim Katmanı (DAO)
Hocamızın direktifleri doğrultusunda her entity için ayrı bir DAO (Data Access Object) sınıfı oluşturulmuştur.
Kullanılan Metotlar: save(), update(), delete(), getById(), getAll().
Transaction Yönetimi: Her işlem bir Hibernate Transaction bloğu içerisinde yürütülür. Hata durumunda rollback() mekanizması devreye girerek veri kaybını önler.
Session Yönetimi: HibernateUtil üzerinden merkezi bir SessionFactory kullanılarak performans optimizasyonu sağlanmıştır.
📋 Uygulama Özellikleri & Konsol Menüsü
Uygulama, kullanıcı dostu bir konsol arayüzüne sahiptir ve aşağıdaki işlevleri sunar:
📚 Kitap Kaydı: Yeni kitapların sisteme girişi ve AVAILABLE durumuna atanması.
📤 Ödünç Verme: Kitabın müsaitlik durumu kontrol edilerek (Zorunlu İşlev) bir öğrenciye atanması.
📥 İade İşlemi: İade tarihinin kaydedilmesi ve kitabın durumunun tekrar AVAILABLE olarak güncellenmesi.
📋 Raporlama: Kitap, öğrenci ve aktif ödünç listelerinin tablo formatında görüntülenmesi.
🚀 Kurulum ve Çalıştırma Talimatı
- Gereksinimler JDK 17 veya üzeri
Maven yüklü bir IDE (IntelliJ IDEA önerilir)
- Çalıştırma
Projeyi klonlayın: git clone https://github.com/gokcenciftci/SmartLibraryPlus
Maven bağımlılıklarını yükleyin: mvn clean install
Uygulamayı başlatın: Main.java dosyasını çalıştırın.
Not: Uygulama ilk çalıştığında smartlibrary.db dosyasını otomatik olarak oluşturacaktır.
📁 Proje Hiyerarşisi
SmartLibraryPlus/
├── src/main/java/
│ ├── app/ # Main Sınıfı
│ ├── dao/ # Veri Erişim Nesneleri
│ ├── entity/ # Veritabanı Modelleri
│ ├── util/ # Hibernate Yapılandırma Aracı
├── src/main/resources/
│ └── hibernate.cfg.xml
└── pom.xml
© 2026 - Nesneye Dayalı Programlama II Final Ödevi