The way you need to define entities... they couldn't be data classes w/o some workarounds, I had to define interfaces that derive from Ktorm base interface... so my domain layer needed to have a dependency on Ktorm, or I needed ugly workarounds for it. Same with #exposed... when I saw Komapper, it was great from the start! You don't need your domain layer to know which db framwork you're using the entities are simple POJO data classes... you don't need mutable properties... and there's a bunch more @David Hamilton, but those were very important for us...