# hamilton2959/real-application-java-banking-system architecture

> Architecture diagram of the GitHub repository hamilton2959/real-application-java-banking-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hamilton2959/real-application-java-banking-system
- Repository: https://github.com/hamilton2959/real-application-java-banking-system

## Overview

This appears to be a JavaFX banking application for managing accounts, customers, loans, transactions, users, and reports. The likely user workflow starts in the desktop UI, passes through controllers and services to persistence, and displays results in views. The tree identifies those components, but the only source excerpt is the Java module descriptor; it does not show runtime wiring. Accordingly, inferred interactions are dashed and have no evidence path.

Main entry points: [`src/main/java/com/example/bankingapplication/controllers/ValidationUtil.java`](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/ValidationUtil.java) (Input validation), [`src/main/java/com/example/bankingapplication/config/DatabaseConfig.java`](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/config/DatabaseConfig.java) (Database configuration), [`src/main/java/com/example/bankingapplication/controllers/AccountController.java`](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/AccountController.java) (Account workflow), [`src/main/java/com/example/bankingapplication/controllers/CustomerController.java`](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/CustomerController.java) (Customer workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop UI"]
  node_app["Application startup"]
  node_mainview["Main view<br/>[MainViews.fxml]"]
  node_loginview["Login view<br/>[Login.fxml]"]
  node_registerview["Registration view<br/>[Register.fxml]"]
  node_accountview["Account view<br/>[AccountView.fxml]"]
  node_customerview["Customer view<br/>[CustomerView.fxml]"]
  node_loanview["Loan view<br/>[LoanView.fxml]"]
  node_transactionview["Transaction view"]
  node_reportview["Report view<br/>[ReportView.fxml]"]
end

subgraph group_workflows["Banking Workflows"]
  node_login["Login workflow"]
  node_register["Registration workflow"]
  node_accounts["Account workflow"]
  node_customers["Customer workflow"]
  node_loans["Loan workflow<br/>[LoanConroller.java]"]
  node_transactions["Transaction workflow"]
  node_reports["Report workflow"]
  node_validation["Input validation"]
  node_accountservice["Account service"]
  node_customerservice["Customer service"]
  node_loanservice["Loan service<br/>[LoanService.java]"]
  node_transactionservice["Transaction service"]
end

subgraph group_domain["Domain Model"]
  node_accountmodel["Account model<br/>[Account.java]"]
  node_customermodel["Customer model<br/>[Customer.java]"]
  node_loanmodel["Loan model<br/>[Loan.java]"]
  node_transactionmodel["Transaction model<br/>[Transaction.java]"]
end

subgraph group_persistence["Persistence"]
  node_session["Session management"]
  node_dbconfig["Database configuration"]
  node_accountrepo["Account persistence"]
  node_customerrepo["Customer persistence"]
  node_loanrepo["Loan persistence"]
  node_transactionrepo["Transaction persistence"]
end

node_user(("Bank staff"))
node_database[("Database")]

node_user -.->|"opens"| node_app
node_app -.->|"shows"| node_mainview
node_user -.->|"uses"| node_loginview
node_user -.->|"uses"| node_registerview
node_user -.->|"uses"| node_accountview
node_user -.->|"uses"| node_customerview
node_user -.->|"uses"| node_loanview
node_user -.->|"uses"| node_transactionview
node_user -.->|"uses"| node_reportview
node_loginview -.->|"dispatches"| node_login
node_registerview -.->|"dispatches"| node_register
node_accountview -.->|"dispatches"| node_accounts
node_customerview -.->|"dispatches"| node_customers
node_loanview -.->|"dispatches"| node_loans
node_transactionview -.->|"dispatches"| node_transactions
node_reportview -.->|"dispatches"| node_reports
node_login -.->|"uses"| node_session
node_register -.->|"uses"| node_customerservice
node_accounts -.->|"uses"| node_accountservice
node_customers -.->|"uses"| node_customerservice
node_loans -.->|"uses"| node_loanservice
node_transactions -.->|"uses"| node_transactionservice
node_reports -.->|"uses"| node_accountservice
node_reports -.->|"uses"| node_transactionservice
node_accounts -.->|"validates"| node_validation
node_customers -.->|"validates"| node_validation
node_loans -.->|"validates"| node_validation
node_transactions -.->|"validates"| node_validation
node_accountservice -.->|"uses"| node_accountrepo
node_customerservice -.->|"uses"| node_customerrepo
node_loanservice -.->|"uses"| node_loanrepo
node_transactionservice -.->|"uses"| node_transactionrepo
node_accountrepo -.->|"configures access"| node_dbconfig
node_customerrepo -.->|"configures access"| node_dbconfig
node_loanrepo -.->|"configures access"| node_dbconfig
node_transactionrepo -.->|"configures access"| node_dbconfig
node_accountrepo -.->|"reads and writes"| node_database
node_customerrepo -.->|"reads and writes"| node_database
node_loanrepo -.->|"reads and writes"| node_database
node_transactionrepo -.->|"reads and writes"| node_database

click node_app "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/HelloApplication.java"
click node_mainview "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/MainViews.fxml"
click node_loginview "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/Login.fxml"
click node_registerview "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/Register.fxml"
click node_accountview "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/AccountView.fxml"
click node_customerview "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/CustomerView.fxml"
click node_loanview "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/LoanView.fxml"
click node_transactionview "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/TransactionView.fxml"
click node_reportview "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/ReportView.fxml"
click node_login "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/LoginController.java"
click node_register "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/RegisterController.java"
click node_accounts "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/AccountController.java"
click node_customers "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/CustomerController.java"
click node_loans "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/LoanConroller.java"
click node_transactions "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/TransactionController.java"
click node_reports "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/ReportController.java"
click node_validation "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/ValidationUtil.java"
click node_accountservice "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/service/AccountService.java"
click node_customerservice "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/service/CustomerService.java"
click node_loanservice "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/service/LoanService.java"
click node_transactionservice "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/service/TransactionService.java"
click node_accountmodel "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/entity/Account.java"
click node_customermodel "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/entity/Customer.java"
click node_loanmodel "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/entity/Loan.java"
click node_transactionmodel "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/entity/Transaction.java"
click node_session "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/config/SessionManager.java"
click node_dbconfig "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/config/DatabaseConfig.java"
click node_accountrepo "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/repoImplementations/AccountRepositoryImpl.java"
click node_customerrepo "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/repoImplementations/CustomerRepositoryImpl.java"
click node_loanrepo "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/repoImplementations/LoanRepositoryImpl.java"
click node_transactionrepo "https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/repoImplementations/TransactionRepositoryImpl.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_mainview,node_loginview,node_registerview,node_accountview,node_customerview,node_loanview,node_transactionview,node_reportview toneBlue
class node_login,node_register,node_accounts,node_customers,node_loans,node_transactions,node_reports,node_validation,node_accountservice,node_customerservice,node_loanservice,node_transactionservice,node_database toneAmber
class node_accountmodel,node_customermodel,node_loanmodel,node_transactionmodel toneMint
class node_session,node_dbconfig,node_accountrepo,node_customerrepo,node_loanrepo,node_transactionrepo toneRose
class node_user toneIndigo
```

## Components

### Desktop UI

- [Application startup](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/HelloApplication.java): `src/main/java/com/example/bankingapplication/HelloApplication.java`
- [Main view](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/MainViews.fxml): `src/main/resources/com/example/bankingapplication/MainViews.fxml`
- [Login view](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/Login.fxml): `src/main/resources/com/example/bankingapplication/Login.fxml`
- [Registration view](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/Register.fxml): `src/main/resources/com/example/bankingapplication/Register.fxml`
- [Account view](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/AccountView.fxml): `src/main/resources/com/example/bankingapplication/AccountView.fxml`
- [Customer view](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/CustomerView.fxml): `src/main/resources/com/example/bankingapplication/CustomerView.fxml`
- [Loan view](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/LoanView.fxml): `src/main/resources/com/example/bankingapplication/LoanView.fxml`
- [Transaction view](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/TransactionView.fxml): `src/main/resources/com/example/bankingapplication/TransactionView.fxml`
- [Report view](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/resources/com/example/bankingapplication/ReportView.fxml): `src/main/resources/com/example/bankingapplication/ReportView.fxml`

### Banking Workflows

- [Login workflow](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/LoginController.java): `src/main/java/com/example/bankingapplication/controllers/LoginController.java`
- [Registration workflow](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/RegisterController.java): `src/main/java/com/example/bankingapplication/controllers/RegisterController.java`
- [Account workflow](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/AccountController.java): `src/main/java/com/example/bankingapplication/controllers/AccountController.java`
- [Customer workflow](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/CustomerController.java): `src/main/java/com/example/bankingapplication/controllers/CustomerController.java`
- [Loan workflow](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/LoanConroller.java): `src/main/java/com/example/bankingapplication/controllers/LoanConroller.java`
- [Transaction workflow](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/TransactionController.java): `src/main/java/com/example/bankingapplication/controllers/TransactionController.java`
- [Report workflow](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/ReportController.java): `src/main/java/com/example/bankingapplication/controllers/ReportController.java`
- [Input validation](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/controllers/ValidationUtil.java): `src/main/java/com/example/bankingapplication/controllers/ValidationUtil.java`
- [Account service](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/service/AccountService.java): `src/main/java/com/example/bankingapplication/service/AccountService.java`
- [Customer service](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/service/CustomerService.java): `src/main/java/com/example/bankingapplication/service/CustomerService.java`
- [Loan service](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/service/LoanService.java): `src/main/java/com/example/bankingapplication/service/LoanService.java`
- [Transaction service](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/service/TransactionService.java): `src/main/java/com/example/bankingapplication/service/TransactionService.java`

### Domain Model

- [Account model](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/entity/Account.java): `src/main/java/com/example/bankingapplication/entity/Account.java`
- [Customer model](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/entity/Customer.java): `src/main/java/com/example/bankingapplication/entity/Customer.java`
- [Loan model](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/entity/Loan.java): `src/main/java/com/example/bankingapplication/entity/Loan.java`
- [Transaction model](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/entity/Transaction.java): `src/main/java/com/example/bankingapplication/entity/Transaction.java`

### Persistence

- [Session management](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/config/SessionManager.java): `src/main/java/com/example/bankingapplication/config/SessionManager.java`
- [Database configuration](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/config/DatabaseConfig.java): `src/main/java/com/example/bankingapplication/config/DatabaseConfig.java`
- [Account persistence](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/repoImplementations/AccountRepositoryImpl.java): `src/main/java/com/example/bankingapplication/repoImplementations/AccountRepositoryImpl.java`
- [Customer persistence](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/repoImplementations/CustomerRepositoryImpl.java): `src/main/java/com/example/bankingapplication/repoImplementations/CustomerRepositoryImpl.java`
- [Loan persistence](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/repoImplementations/LoanRepositoryImpl.java): `src/main/java/com/example/bankingapplication/repoImplementations/LoanRepositoryImpl.java`
- [Transaction persistence](https://github.com/hamilton2959/real-application-java-banking-system/blob/master/src/main/java/com/example/bankingapplication/repoImplementations/TransactionRepositoryImpl.java): `src/main/java/com/example/bankingapplication/repoImplementations/TransactionRepositoryImpl.java`

### Other components

- **Bank staff**
- **Database**

## Connections

- Bank staff → Application startup: opens
- Application startup → Main view: shows
- Bank staff → Login view: uses
- Bank staff → Registration view: uses
- Bank staff → Account view: uses
- Bank staff → Customer view: uses
- Bank staff → Loan view: uses
- Bank staff → Transaction view: uses
- Bank staff → Report view: uses
- Login view → Login workflow: dispatches
- Registration view → Registration workflow: dispatches
- Account view → Account workflow: dispatches
- Customer view → Customer workflow: dispatches
- Loan view → Loan workflow: dispatches
- Transaction view → Transaction workflow: dispatches
- Report view → Report workflow: dispatches
- Login workflow → Session management: uses
- Registration workflow → Customer service: uses
- Account workflow → Account service: uses
- Customer workflow → Customer service: uses
- Loan workflow → Loan service: uses
- Transaction workflow → Transaction service: uses
- Report workflow → Account service: uses
- Report workflow → Transaction service: uses
- Account workflow → Input validation: validates
- Customer workflow → Input validation: validates
- Loan workflow → Input validation: validates
- Transaction workflow → Input validation: validates
- Account service → Account persistence: uses
- Customer service → Customer persistence: uses
- Loan service → Loan persistence: uses
- Transaction service → Transaction persistence: uses
- Account persistence → Database configuration: configures access
- Customer persistence → Database configuration: configures access
- Loan persistence → Database configuration: configures access
- Transaction persistence → Database configuration: configures access
- Account persistence → Database: reads and writes
- Customer persistence → Database: reads and writes
- Loan persistence → Database: reads and writes
- Transaction persistence → Database: reads and writes
