A config-driven JavaFX desktop client for Oracle databases. The application connects to an Oracle database, authenticates the user, and builds its entire UI from a JSON configuration file — table views, input forms, and procedure calls are generated at runtime, so new screens can be added without changing the code. The included configuration demonstrates the app on an airline / flights domain.
- Login screen with Oracle authentication — credentials are entered by the user and passed straight to the JDBC connection (nothing is stored on disk).
- Config-driven UI — views, tables, and forms are described in
views_config.json; adding a new screen is a config change, not a code change. - Dynamic data views — browse Oracle views and tables in generated
TableViews. - Procedure forms — call PL/SQL stored procedures and DBMS procedures through auto-generated input forms, including dropdown fields populated from other tables (
TableList). - Excel export — export any result set to
.xlsxvia Apache POI. - Centralized error handling — user-facing dialogs plus Log4j2 logging.
Java · JavaFX · Oracle JDBC (ojdbc8) · Apache POI · Log4j2 · org.json · Maven
kz.aws.oracleapp/
├── src/main/java/kz/aws/oracleapp/
│ ├── database/ # Oracle connection, views, stored/DBMS procedures
│ ├── scene/ # JavaFX screens (login, dynamic tables, dynamic forms)
│ ├── scenehelper/ # dialogs, query handling, loaders
│ ├── data/ # config loading, app/user state
│ ├── excel/ # export to .xlsx
│ └── dispetcher/ # Dispatcher — JavaFX Application entry point
├── data/config.properties # JDBC URL
└── views_config.json # UI definition (views, tables, procedure forms)
Requirements: JDK 11+ with JavaFX, Maven, and access to an Oracle database.
- Set your database URL in
data/config.properties:db.url=jdbc:oracle:thin:@HOST:1521/SERVICE - Adjust
views_config.jsonto match your schema (views, tables, and procedures you want to expose). - Build and run:
mvn clean compile mvn exec:java -Dexec.mainClass="kz.aws.oracleapp.dispetcher.Dispatcher" - Log in with a valid Oracle username and password.
- Database credentials are never persisted — they are supplied at login and used only to open the connection.
config.propertiesholds only the JDBC URL. - The
views_config.jsonformat supportsview,hproc(stored procedure), and DBMS-procedure screens, with typed fields (VARCHAR2,NUMBER,DATE, andTableListdropdowns).