-
The object/relational mapping problem is hard
-
you either have to make your in-memory model more relational, or you complicate your mapping code
-
it’s reasonable to have a more relational domain model to simplify your object-relational mapping
-
To avoid the mapping problem you have two alternatives. Either you use the relational model in memory, or you don’t use it in the database.
-
To use a relational model in memory basically means programming relations
-
I think NoSQL is serious technology. If you have an application problem that maps well to a NoSQL data model - such as aggregates or graphs - then you can avoid the nastiness of mapping. Indeed this is often a reason I’ve heard teams go with a NoSQL solution.