# seasln/dbtech25 architecture

> Architecture diagram of the GitHub repository seasln/dbtech25, 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/seasln/dbtech25
- Repository: https://github.com/seasln/dbtech25

## Overview

This repository is a database-technology course exercise set, not one deployed application. Its central insurance workflow ranges from basic Java contract and rate operations (Übung 2), through validating and storing contract coverage in Java (Übung 3), to invoking a PL/SQL reimplementation (Übung 4). A DAO-based alternative separates coverage, contract, and coverage-type access. The tree also includes auction and room JDBC examples. The README documents Übung 1 as SQL practice; its implementation is outside this Java tree. Some service internals are unsampled, so only documented or source-visible links are shown.

Main entry points: [`javasrc/de/htwberlin/dbtech/aufgaben/dao/VersicherungServiceDao.java`](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/dao/VersicherungServiceDao.java) (DAO Coverage Service), [`javasrc/de/htwberlin/dbtech/aufgaben/ue03/IVersicherungService.java`](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue03/IVersicherungService.java) (Coverage API), [`javasrc/de/htwberlin/dbtech/aufgaben/ue03/VersicherungService.java`](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue03/VersicherungService.java) (Java Coverage Service), [`javasrc/de/htwberlin/dbtech/bsp/auktion/AuktionsServiceDao.java`](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/auktion/AuktionsServiceDao.java) (Auction DAO Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_insurance["Insurance Services"]
  node_ue02api["Basic Insurance API"]
  node_ue02impl["Java Data Services"]
  node_ue03api["Coverage API"]
  node_ue03java["Java Coverage Service"]
  node_coveragechecks["Coverage Validation"]
  node_plsqlclient["PL SQL Client"]
end

subgraph group_dao["DAO Alternative"]
  node_daoservice["DAO Coverage Service"]
  node_deckungdao["Coverage DAO<br/>[DeckungDao.java]"]
  node_vertragdao["Contract DAO<br/>[VertragDao.java]"]
  node_deckungsartdao["Coverage Type DAO"]
end

subgraph group_database["Database Layer"]
  node_db[("Insurance Database")]
  node_plsql["PL SQL Procedure"]
end

subgraph group_examples["JDBC Examples"]
  node_auctionservice["Auction Service"]
  node_auctiondao["Auction DAO Service"]
  node_angebotfinder["Offer Finder<br/>[AngebotFinder.java]"]
  node_gebot["Bid Record<br/>[Gebot.java]"]
  node_roomservice["Room Lookup<br/>[RaumService.java]"]
end

node_learner(("Learner"))
node_auctionuser(("Auction Client"))
node_roomuser(("Room Client"))

node_learner -->|"uses"| node_ue02api
node_ue02api -->|"implemented by"| node_ue02impl
node_ue02impl -->|"reads and writes"| node_db
node_learner -->|"uses"| node_ue03api
node_ue03api -->|"implemented by"| node_ue03java
node_ue03java -->|"validates coverage"| node_coveragechecks
node_ue03java -->|"queries and inserts"| node_db
node_ue03api -->|"implemented by"| node_daoservice
node_daoservice -->|"inserts coverage"| node_deckungdao
node_daoservice -->|"checks contract rules"| node_vertragdao
node_daoservice -->|"checks coverage type"| node_deckungsartdao
node_deckungdao -->|"writes"| node_db
node_vertragdao -->|"queries"| node_db
node_deckungsartdao -->|"queries"| node_db
node_learner -->|"uses"| node_plsqlclient
node_plsqlclient -->|"calls procedure"| node_plsql
node_plsql -->|"validates and stores"| node_db
node_auctionuser -->|"submits bid"| node_auctionservice
node_auctionservice -->|"checks and stores bid"| node_db
node_auctionuser -->|"submits bid"| node_auctiondao
node_auctiondao -->|"finds offer"| node_angebotfinder
node_auctiondao -->|"creates bid"| node_gebot
node_angebotfinder -->|"reads offer"| node_db
node_gebot -->|"inserts bid"| node_db
node_roomuser -->|"requests seats"| node_roomservice
node_roomservice -->|"reads seat count"| node_db

click node_ue02api "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue02/IVersicherungJdbc.java"
click node_ue02impl "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue02/VersicherungJdbc.java"
click node_ue03api "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue03/IVersicherungService.java"
click node_ue03java "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue03/VersicherungService.java"
click node_coveragechecks "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue03/VersicherungService.java"
click node_plsqlclient "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue04/VersicherungServicePlSql.java"
click node_daoservice "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/dao/VersicherungServiceDao.java"
click node_deckungdao "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/dao/DeckungDao.java"
click node_vertragdao "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/dao/VertragDao.java"
click node_deckungsartdao "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/dao/DeckungsartDao.java"
click node_auctionservice "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/auktion/AuktionsService.java"
click node_auctiondao "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/auktion/AuktionsServiceDao.java"
click node_angebotfinder "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/auktion/AngebotFinder.java"
click node_gebot "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/auktion/Gebot.java"
click node_roomservice "https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/raum/RaumService.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_ue02api,node_ue02impl,node_ue03api,node_ue03java,node_coveragechecks,node_plsqlclient,node_auctionuser,node_roomuser toneBlue
class node_daoservice,node_deckungdao,node_vertragdao,node_deckungsartdao toneAmber
class node_db,node_plsql toneMint
class node_auctionservice,node_auctiondao,node_angebotfinder,node_gebot,node_roomservice toneRose
class node_learner toneIndigo
```

## Components

### Insurance Services

- [Basic Insurance API](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue02/IVersicherungJdbc.java): `javasrc/de/htwberlin/dbtech/aufgaben/ue02/IVersicherungJdbc.java`
- [Java Data Services](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue02/VersicherungJdbc.java): `javasrc/de/htwberlin/dbtech/aufgaben/ue02/VersicherungJdbc.java`
- [Coverage API](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue03/IVersicherungService.java): `javasrc/de/htwberlin/dbtech/aufgaben/ue03/IVersicherungService.java`
- [Java Coverage Service](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue03/VersicherungService.java): `javasrc/de/htwberlin/dbtech/aufgaben/ue03/VersicherungService.java`
- [Coverage Validation](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue03/VersicherungService.java): `javasrc/de/htwberlin/dbtech/aufgaben/ue03/VersicherungService.java`
- [PL SQL Client](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/ue04/VersicherungServicePlSql.java): `javasrc/de/htwberlin/dbtech/aufgaben/ue04/VersicherungServicePlSql.java`

### DAO Alternative

- [DAO Coverage Service](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/dao/VersicherungServiceDao.java): `javasrc/de/htwberlin/dbtech/aufgaben/dao/VersicherungServiceDao.java`
- [Coverage DAO](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/dao/DeckungDao.java): `javasrc/de/htwberlin/dbtech/aufgaben/dao/DeckungDao.java`
- [Contract DAO](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/dao/VertragDao.java): `javasrc/de/htwberlin/dbtech/aufgaben/dao/VertragDao.java`
- [Coverage Type DAO](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/aufgaben/dao/DeckungsartDao.java): `javasrc/de/htwberlin/dbtech/aufgaben/dao/DeckungsartDao.java`

### Database Layer

- **Insurance Database**
- **PL SQL Procedure**

### JDBC Examples

- [Auction Service](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/auktion/AuktionsService.java): `javasrc/de/htwberlin/dbtech/bsp/auktion/AuktionsService.java`
- [Auction DAO Service](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/auktion/AuktionsServiceDao.java): `javasrc/de/htwberlin/dbtech/bsp/auktion/AuktionsServiceDao.java`
- [Offer Finder](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/auktion/AngebotFinder.java): `javasrc/de/htwberlin/dbtech/bsp/auktion/AngebotFinder.java`
- [Bid Record](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/auktion/Gebot.java): `javasrc/de/htwberlin/dbtech/bsp/auktion/Gebot.java`
- [Room Lookup](https://github.com/seasln/dbtech25/blob/main/javasrc/de/htwberlin/dbtech/bsp/raum/RaumService.java): `javasrc/de/htwberlin/dbtech/bsp/raum/RaumService.java`

### Other components

- **Learner**
- **Auction Client**
- **Room Client**

## Connections

- Learner → Basic Insurance API: uses
- Basic Insurance API → Java Data Services: implemented by
- Java Data Services → Insurance Database: reads and writes
- Learner → Coverage API: uses
- Coverage API → Java Coverage Service: implemented by
- Java Coverage Service → Coverage Validation: validates coverage
- Java Coverage Service → Insurance Database: queries and inserts
- Coverage API → DAO Coverage Service: implemented by
- DAO Coverage Service → Coverage DAO: inserts coverage
- DAO Coverage Service → Contract DAO: checks contract rules
- DAO Coverage Service → Coverage Type DAO: checks coverage type
- Coverage DAO → Insurance Database: writes
- Contract DAO → Insurance Database: queries
- Coverage Type DAO → Insurance Database: queries
- Learner → PL SQL Client: uses
- PL SQL Client → PL SQL Procedure: calls procedure
- PL SQL Procedure → Insurance Database: validates and stores
- Auction Client → Auction Service: submits bid
- Auction Service → Insurance Database: checks and stores bid
- Auction Client → Auction DAO Service: submits bid
- Auction DAO Service → Offer Finder: finds offer
- Auction DAO Service → Bid Record: creates bid
- Offer Finder → Insurance Database: reads offer
- Bid Record → Insurance Database: inserts bid
- Room Client → Room Lookup: requests seats
- Room Lookup → Insurance Database: reads seat count
