This only works in theory.
In reality sometimes access via an API is way too slow or is lacking flexibility.
And I don't get this: "(e.g. if you have multiple applications writing to your database in transactions then you're virtually guaranteed to get deadlocks)"
Isn't this why transactions exist in the first place?