Picking the right level and nature of abstraction for the problem at hand is something of an art. Too high and you'll straitjacket yourself. Too low and you'll spend most of your time maintaining ugly boilerplate.
One of the many reasons why CRUD is way harder than its reputation credits it with.
One of the many reasons why CRUD is way harder than its reputation credits it with.