We mostly have "code-first", then "db-first", but we also have nosql backends (mongodb, lucene) so don't have databases/schemas.
In that case you'll have to give quite a bit more information with annotations (ignoring properties, forcing a specific query type)
So annotations are inevitable 😉