# vinay6697/library-management-system architecture

> Architecture diagram of the GitHub repository vinay6697/library-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vinay6697/library-management-system
- Repository: https://github.com/vinay6697/library-management-system

## Overview

This is a menu-driven Java/Hibernate library manager. A user selects author, book, or member registration/retrieval, or book issuing; the console routes requests to DAOs or the issue service. Issuing checks book availability and member existence, creates an issue record, reduces book quantity, and persists the changes. DAOs use a shared EntityManager utility for relational persistence. Entity relationship mappings are included; source excerpts do not show the persistence configuration or a general web/API layer.

Main entry points: [`src/main/java/com/ty/librarymanagement/main/LibraryApplication.java`](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/main/LibraryApplication.java) (Menu application), [`src/main/java/com/ty/librarymanagement/service/IssueRecordService.java`](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/service/IssueRecordService.java) (Issue workflow), [`src/main/java/com/ty/librarymanagement/util/HibernateUtil.java`](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/util/HibernateUtil.java) (Entity manager), [`src/main/java/com/ty/librarymanagement/dao/BookDAO.java`](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/dao/BookDAO.java) (Book records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Console interface"]
  node_app["Menu application"]
end

subgraph group_operations["Library operations"]
  node_issue_service["Issue workflow"]
  node_author_dao["Author records<br/>[AuthorDAO.java]"]
  node_book_dao["Book records<br/>[BookDAO.java]"]
  node_member_dao["Member records<br/>[MemberDAO.java]"]
  node_issue_dao["Issue records"]
end

subgraph group_domain["Library domain"]
  node_author["Author entity<br/>[Author.java]"]
  node_book["Book entity<br/>[Book.java]"]
  node_member["Member entity<br/>[Member.java]"]
  node_issue_record["Issue entity<br/>[IssueRecord.java]"]
end

subgraph group_persistence["Persistence"]
  node_hibernate["Entity manager<br/>[HibernateUtil.java]"]
  node_database[("Relational database")]
end

node_user(("Library user"))

node_user -->|"selects operation"| node_app
node_app -->|"registers or retrieves"| node_author_dao
node_app -->|"registers or retrieves"| node_book_dao
node_app -->|"registers or retrieves"| node_member_dao
node_app -->|"dispatches issuing"| node_issue_service
node_app -->|"creates"| node_author
node_app -->|"creates"| node_book
node_app -->|"creates"| node_member
node_issue_service -->|"finds and updates"| node_book_dao
node_issue_service -->|"finds member"| node_member_dao
node_issue_service -->|"saves record"| node_issue_dao
node_issue_service -->|"creates"| node_issue_record
node_author_dao -->|"persists and queries"| node_author
node_book_dao -->|"persists and queries"| node_book
node_member_dao -->|"persists and queries"| node_member
node_issue_dao -->|"persists and queries"| node_issue_record
node_author_dao -->|"gets entity manager"| node_hibernate
node_book_dao -->|"gets entity manager"| node_hibernate
node_member_dao -->|"gets entity manager"| node_hibernate
node_issue_dao -->|"gets entity manager"| node_hibernate
node_hibernate -->|"persists records"| node_database
node_author -->|"one-to-many mapping"| node_book
node_book -->|"one-to-many mapping"| node_issue_record
node_member -->|"one-to-many mapping"| node_issue_record

click node_app "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/main/LibraryApplication.java"
click node_issue_service "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/service/IssueRecordService.java"
click node_author_dao "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/dao/AuthorDAO.java"
click node_book_dao "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/dao/BookDAO.java"
click node_member_dao "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/dao/MemberDAO.java"
click node_issue_dao "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/dao/IssueRecordDAO.java"
click node_author "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/entity/Author.java"
click node_book "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/entity/Book.java"
click node_member "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/entity/Member.java"
click node_issue_record "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/entity/IssueRecord.java"
click node_hibernate "https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/util/HibernateUtil.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_user toneBlue
class node_issue_service,node_author_dao,node_book_dao,node_member_dao,node_issue_dao toneAmber
class node_author,node_book,node_member,node_issue_record toneMint
class node_hibernate,node_database toneRose
```

## Components

### Console interface

- [Menu application](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/main/LibraryApplication.java): `src/main/java/com/ty/librarymanagement/main/LibraryApplication.java`

### Library operations

- [Issue workflow](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/service/IssueRecordService.java): `src/main/java/com/ty/librarymanagement/service/IssueRecordService.java`
- [Author records](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/dao/AuthorDAO.java): `src/main/java/com/ty/librarymanagement/dao/AuthorDAO.java`
- [Book records](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/dao/BookDAO.java): `src/main/java/com/ty/librarymanagement/dao/BookDAO.java`
- [Member records](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/dao/MemberDAO.java): `src/main/java/com/ty/librarymanagement/dao/MemberDAO.java`
- [Issue records](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/dao/IssueRecordDAO.java): `src/main/java/com/ty/librarymanagement/dao/IssueRecordDAO.java`

### Library domain

- [Author entity](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/entity/Author.java): `src/main/java/com/ty/librarymanagement/entity/Author.java`
- [Book entity](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/entity/Book.java): `src/main/java/com/ty/librarymanagement/entity/Book.java`
- [Member entity](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/entity/Member.java): `src/main/java/com/ty/librarymanagement/entity/Member.java`
- [Issue entity](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/entity/IssueRecord.java): `src/main/java/com/ty/librarymanagement/entity/IssueRecord.java`

### Persistence

- [Entity manager](https://github.com/vinay6697/library-management-system/blob/main/src/main/java/com/ty/librarymanagement/util/HibernateUtil.java): `src/main/java/com/ty/librarymanagement/util/HibernateUtil.java`
- **Relational database**

### Other components

- **Library user**

## Connections

- Library user → Menu application: selects operation (evidence: `README.md`)
- Menu application → Author records: registers or retrieves (evidence: `src/main/java/com/ty/librarymanagement/main/LibraryApplication.java`)
- Menu application → Book records: registers or retrieves (evidence: `src/main/java/com/ty/librarymanagement/main/LibraryApplication.java`)
- Menu application → Member records: registers or retrieves (evidence: `src/main/java/com/ty/librarymanagement/main/LibraryApplication.java`)
- Menu application → Issue workflow: dispatches issuing (evidence: `src/main/java/com/ty/librarymanagement/main/LibraryApplication.java`)
- Menu application → Author entity: creates (evidence: `src/main/java/com/ty/librarymanagement/main/LibraryApplication.java`)
- Menu application → Book entity: creates (evidence: `src/main/java/com/ty/librarymanagement/main/LibraryApplication.java`)
- Menu application → Member entity: creates (evidence: `src/main/java/com/ty/librarymanagement/main/LibraryApplication.java`)
- Issue workflow → Book records: finds and updates (evidence: `src/main/java/com/ty/librarymanagement/service/IssueRecordService.java`)
- Issue workflow → Member records: finds member (evidence: `src/main/java/com/ty/librarymanagement/service/IssueRecordService.java`)
- Issue workflow → Issue records: saves record (evidence: `src/main/java/com/ty/librarymanagement/service/IssueRecordService.java`)
- Issue workflow → Issue entity: creates (evidence: `src/main/java/com/ty/librarymanagement/service/IssueRecordService.java`)
- Author records → Author entity: persists and queries (evidence: `src/main/java/com/ty/librarymanagement/dao/AuthorDAO.java`)
- Book records → Book entity: persists and queries (evidence: `src/main/java/com/ty/librarymanagement/dao/BookDAO.java`)
- Member records → Member entity: persists and queries (evidence: `src/main/java/com/ty/librarymanagement/dao/MemberDAO.java`)
- Issue records → Issue entity: persists and queries (evidence: `src/main/java/com/ty/librarymanagement/dao/IssueRecordDAO.java`)
- Author records → Entity manager: gets entity manager (evidence: `src/main/java/com/ty/librarymanagement/dao/AuthorDAO.java`)
- Book records → Entity manager: gets entity manager (evidence: `src/main/java/com/ty/librarymanagement/dao/BookDAO.java`)
- Member records → Entity manager: gets entity manager (evidence: `src/main/java/com/ty/librarymanagement/dao/MemberDAO.java`)
- Issue records → Entity manager: gets entity manager (evidence: `src/main/java/com/ty/librarymanagement/dao/IssueRecordDAO.java`)
- Entity manager → Relational database: persists records (evidence: `README.md`)
- Author entity → Book entity: one-to-many mapping (evidence: `src/main/java/com/ty/librarymanagement/entity/Author.java`)
- Book entity → Issue entity: one-to-many mapping (evidence: `src/main/java/com/ty/librarymanagement/entity/Book.java`)
- Member entity → Issue entity: one-to-many mapping (evidence: `src/main/java/com/ty/librarymanagement/entity/Member.java`)
