Skip to content

Piri Reis Üniversitesi - Bilgisayar Programcılığı - 2. Sınıf 1. Dönem - Nesneye Dayalı Programlama 2 Dersi Final Ödevi (Hibernate & SQLite)

Notifications You must be signed in to change notification settings

gokcenciftci/SmartLibraryPlus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

📚 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:

  1. 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.

  1. 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ı

  1. Gereksinimler JDK 17 veya üzeri

Maven yüklü bir IDE (IntelliJ IDEA önerilir)

  1. Ç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

About

Piri Reis Üniversitesi - Bilgisayar Programcılığı - 2. Sınıf 1. Dönem - Nesneye Dayalı Programlama 2 Dersi Final Ödevi (Hibernate & SQLite)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages