If you’ve spent any time writing integration tests in Java or Kotlin against real databases, you’ve likely hit one of these pain points:
- DBUnit XML/YAML fixtures that rot silently until column renames break CI.
- Hand-written SQL seeding scripts with zero autocomplete or compile-time safety.
- Overloaded JPA/Hibernate entities dragged into simple test setups just to insert two rows.
Mocks hide database bugs, and fragile test data makes integration suites a nightmare to maintain.
Enter jdbscript
To solve this, I built jdbscript — a lightweight Java library (Apache 2.0) that treats database seeding like plain Java code with full compiler support.
Instead of writing raw SQL or XML, your database schema is represented as a plain Java or Kotlin interface. Dynamic proxies handle table cleanup, foreign key ordering, and runtime execution under the hood.
Here is what it looks like in practice:
// 1. Define your schema interface public interface IAppSchema extends IDBSchema { IUserRecord users(); IOrderRecord orders(); } // 2. Create engine that handles db manipulation IJDBEngine<IAppSchema> engine = JDBEngine.builder(IAppSchema.class) .dataSource(dataSource) .build(); // 3. Seed test fixtures cleanly engine.resetDB(db -> { db.users().id(1L).username("alice").email("alice@example.com"); db.users().id(2L).username("bob").email("bob@example.com"); db.orders().id(101L).user_id(1L).total_amount(49.99); }); Key Highlights
- Automatic Foreign Key Ordering & Cleanup:
resetDBautomatically cleans and inserts records in the correct dependency order so constraint violations don't break your suite. - Migration Testing: Verify Flyway or Liquibase scripts against real schemas deterministically.
- Zero Framework Lock-in: Requires Java 17+ and a standard
DataSource. Integrates seamlessly with JUnit 5, Testcontainers, and Spring Boot. - Broad Database Support: Validated in CI across PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, Google Cloud Spanner, H2, CockroachDB, and DuckDB.
Give It a Spin
jdbscript v1.3.0 is live on Maven Central. (this version replaced old solution in a 9 years project)
There are 12 runnable examples (featuring Java & Kotlin with Spring Boot, Testcontainers, and Flyway) at jdbscript.org.
- Project site: jdbscript.org
- GitHub Repository: cyberdruid-dev/jdbscript
Check out the repo, try pointing it at your dev schema, and let me know how it fits into your testing workflow!
