The summary.
THESE FRAMEWORKS TRADE FLEXIBILITY FOR CONSISTENCY
Strong conventions, dependency injection, and everything included. That suits large teams and long-lived systems, and is heavier than small projects need.
THE SAME QUERY-PER-ITEM FAULT APPEARS IN EVERY ORM
Whatever the language, accessing a relationship per item in a loop produces a query per item. Fetch explicitly, and monitor query counts.
Use projections returning only the fields needed.
BE CAREFUL WITH LAZY LOADING OUTSIDE A TRANSACTION
And with relationships configured to load eagerly, which fetch far more than intended.
SECURE HEALTH, METRICS AND ADMINISTRATIVE ENDPOINTS
They reveal internal detail that assists an attacker.
EXTERNALISE EVERYTHING THAT DIFFERS BETWEEN ENVIRONMENTS
Particularly credentials, and use per-environment profiles rather than conditionals in code.
TEST SLICES RATHER THAN THE WHOLE APPLICATION CONTEXT
Full-context tests are slow, and slow tests are not run.
CHECK WHAT RUNTIME AND PROCESS MODEL YOUR HOSTING SUPPORTS BEFORE COMMITTING
All of these need persistent processes, which shared hosting frequently does not provide.