I personally don't mind having simple table definitions, but I find that having the number of characters for varchar or relations specified if it really only effects DDL is a waste for me, and even misleading that there might be checks in the code for validating such things, but it seems that in reality there isn't. The .class.exposedTable seems to me a bit messier, but I guess it could be hidden in the DI wiring. But TestData::optInt.exposedColumn is much less succint...
By the way, separating DDL might help for R2DBC that doesn't have it.
And having coroutines handle blocking calls to regular jdbc with withContext or flowOn wouldn't be better? Then in R2DBC you could use it without withContext or flowOn...