A Java and PostgreSQL task manager over JDBC — full CRUD, prepared statements, and a schema designed from scratch.
Author
Khang Thai
Published
January 26, 2025
JavaPostgreSQLJDBCSQL
A deliberately small project with a deliberate purpose: build the database layer by hand. No ORM, no framework —
just Java, JDBC, and a PostgreSQL schema I designed myself, so that every query and every connection is something I
had to reason about.
Schema design
Designed a PostgreSQL tasks table with columns for task ID, name, description, due date and status.
Chose types and constraints up front rather than letting a migration tool decide them.
JDBC integration
Established the JDBC connection and wrote the SQL for insert, select, update and delete directly.
Used prepared statements throughout — parameterized queries, so user input never reaches the
database as concatenated SQL. This is the whole reason to write the layer by hand: SQL injection stops being an
abstract lesson.
Application
Add a task with name, description, due date and status.
View every task currently persisted.
Update a task's name or status.
Delete a task permanently.
Wrapped in a console interface that prompts for each operation.
Where it goes next
The natural extensions are user authentication, filtering and sorting on the query side, and a real front end. The
backend is already structured so that swapping the console for an HTTP layer would not require rewriting the data
access code.