# iqbal7379/merchant_product_app architecture

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

- Interactive diagram: https://gitdiagram.com/iqbal7379/merchant_product_app
- Repository: https://github.com/iqbal7379/merchant_product_app

## Overview

This is a console-based merchant and product management app. A user selects an operation in the controller, which delegates merchant or product work to a DAO; the DAOs use JPA/Hibernate to persist entities or query them, and the controller displays returned results. The sampled code supports merchant create/update/find and credential checks, plus product add/update and searches by merchant, brand, and category. The README also mentions removals and product deletion, but those operations are not present in the sampled source. Persistence configuration is present, but its contents were not sampled.

Main entry points: [`src/main/java/org/jsp/merchantproductApp/controller/MerchantProductController.java`](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/controller/MerchantProductController.java) (Operation controller), [`src/main/java/org/jsp/merchantproductApp/dao/ProductDao.java`](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dao/ProductDao.java) (Product DAO), [`src/main/java/org/jsp/merchantproductApp/dao/MerchantDao.java`](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dao/MerchantDao.java) (Merchant DAO), [`src/main/java/org/jsp/merchantproductApp/dto/Merchant.java`](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dto/Merchant.java) (Merchant entity)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Console interface"]
  node_controller["Operation controller"]
end

subgraph group_access["Data access"]
  node_merchant_dao["Merchant DAO<br/>[MerchantDao.java]"]
  node_product_dao["Product DAO<br/>[ProductDao.java]"]
  node_persistence["JPA configuration<br/>[persistence.xml]"]
end

subgraph group_domain["Domain model"]
  node_merchant["Merchant entity<br/>[Merchant.java]"]
  node_product["Product entity<br/>[Product.java]"]
end

node_user(("User"))
node_orm["JPA / Hibernate"]
node_database[("Relational database")]

node_user -->|"selects operation"| node_controller
node_controller -->|"displays result"| node_user
node_controller -->|"merchant operations"| node_merchant_dao
node_controller -->|"product operations"| node_product_dao
node_merchant_dao -->|"reads and writes"| node_merchant
node_product_dao -->|"finds merchant"| node_merchant
node_product_dao -->|"reads and writes"| node_product
node_merchant_dao -->|"runs persistence queries"| node_orm
node_product_dao -->|"runs persistence queries"| node_orm
node_orm -->|"uses unit config"| node_persistence
node_orm -->|"persists and queries"| node_database

click node_controller "https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/controller/MerchantProductController.java"
click node_merchant_dao "https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dao/MerchantDao.java"
click node_product_dao "https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dao/ProductDao.java"
click node_merchant "https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dto/Merchant.java"
click node_product "https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dto/Product.java"
click node_persistence "https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/resources/META-INF/persistence.xml"

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_controller,node_user toneBlue
class node_merchant_dao,node_product_dao,node_persistence,node_database toneAmber
class node_merchant,node_product toneMint
class node_orm toneIndigo
```

## Components

### Console interface

- [Operation controller](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/controller/MerchantProductController.java): `src/main/java/org/jsp/merchantproductApp/controller/MerchantProductController.java`

### Data access

- [Merchant DAO](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dao/MerchantDao.java): `src/main/java/org/jsp/merchantproductApp/dao/MerchantDao.java`
- [Product DAO](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dao/ProductDao.java): `src/main/java/org/jsp/merchantproductApp/dao/ProductDao.java`
- [JPA configuration](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/resources/META-INF/persistence.xml): `src/main/resources/META-INF/persistence.xml`

### Domain model

- [Merchant entity](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dto/Merchant.java): `src/main/java/org/jsp/merchantproductApp/dto/Merchant.java`
- [Product entity](https://github.com/iqbal7379/merchant_product_app/blob/main/src/main/java/org/jsp/merchantproductApp/dto/Product.java): `src/main/java/org/jsp/merchantproductApp/dto/Product.java`

### Other components

- **User**
- **JPA / Hibernate**
- **Relational database**

## Connections

- User → Operation controller: selects operation
- Operation controller → User: displays result
- Operation controller → Merchant DAO: merchant operations
- Operation controller → Product DAO: product operations
- Merchant DAO → Merchant entity: reads and writes
- Product DAO → Merchant entity: finds merchant
- Product DAO → Product entity: reads and writes
- Merchant DAO → JPA / Hibernate: runs persistence queries
- Product DAO → JPA / Hibernate: runs persistence queries
- JPA / Hibernate → JPA configuration: uses unit config
- JPA / Hibernate → Relational database: persists and queries
