Java Library Management System
A complete Library Management System built using Java 21, JDBC, MySQL, DAO Layer Architecture, and Maven. This project demonstrates real backend development skills
Features Book Management
Add books (title, author, year)
View all books
Search books by title/author
Book availability status: Available / Issued
User Management
Add new users (name + email)
View user details
Validate user before issuing books
Issue / Return System
Issue a book to a user
Prevent issuing the same book twice
Return issued books
Track active loans (issued date, return date)
π Database Integration (MySQL)
Dockerized MySQL support
JDBC connectivity
Proper relational schema
Foreign key relationships
Project Architecture (DAO Design Pattern) src βββ main/java/org/example βββ db β βββ DBConnection.java βββ dao β βββ BookDAO.java β βββ UserDAO.java β βββ LoanDAO.java βββ model β βββ Book.java β βββ User.java β βββ LoanRecord.java βββ service β βββ LibraryService.java βββ Main.java
This follows an industry-standard layered architecture:
Model Layer β Structures data
DAO Layer β Handles SQL logic
Service Layer β Business logic
Main β Console UI
π Database Schema (MySQL) CREATE DATABASE library_db; USE library_db;
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100) );
CREATE TABLE books ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(150), author VARCHAR(100), year INT, is_issued BOOLEAN DEFAULT FALSE );
CREATE TABLE loans ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, book_id INT, issued_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, returned_at TIMESTAMP NULL, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (book_id) REFERENCES books(id) );
JDBC Configuration
Update credentials in DBConnection.java:
private static final String URL = "jdbc:mysql://localhost:3306/library_db?useSSL=false&allowPublicKeyRetrieval=true"; private static final String USER = "root"; private static final String PASSWORD = "your_password";
How to Run the Project
1οΈStart MySQL (Docker example)
docker run --name mysql
-e MYSQL_ROOT_PASSWORD=ankit@123
-p 3306:3306 -d mysql:latest
2οΈApply SQL Schema
Import the SQL commands above using DBeaver / MySQL Workbench.
3οΈRun the Project
Inside IntelliJ IDEA:
Run β Main.java
You will see:
=== Library Management System ===
- Add Book
- Add User
- View All Books
- Search Books
- Issue Book
- Return Book
- View Active Loans
- Exit
Why This Project Is Strong for Interviews
This project demonstrates:
Core Java (OOP, Classes, Objects, Inheritance, Encapsulation)
JDBC Database Connectivity
MySQL RDBMS Design
DAO + Service Architecture
Error handling & Input validation
CRUD operations
Real-world issue/return system logic
Docker usage
Clean folder structure
License
This project is licensed under the MIT License.
β Show Support
If this project helped you, please β star the repo!