Mark Seemann has long argued against object-relational mappers. Here he makes a sharper case: if LLMs write code, the ORM’s strongest justification — reducing boilerplate — falls away. Why keep wrestling with a temperamental implicit API when you could ask an LLM to write fine-tuned parameterized SQL directly?
- ORMs bring their own pitfalls: anti-patterns, idioms to follow, particular APIs to avoid, specific parameter values to explicitly pass
- This is ironic — ORMs promised freedom from SQL details, yet experts must know query efficiency intimately to use the ORM correctly
- The boilerplate argument evaporates when an LLM can generate all the mapping and query code for either approach
- Seemann’s proposal: write parameterized SQL directly, ask an LLM to produce it — and remind it to avoid SQL injection
Seemann’s point is that the LLM disrupts the ORM’s value proposition. The old tradeoff — write ORM boilerplate vs write SQL boilerplate — is dead if the LLM writes either one equally well. The ORM’s query-tuning surface area becomes pure liability. The default shifts toward plain SQL for anything beyond basic CRUD, with the LLM handling the mapping and boilerplate that ORMs were supposed to solve.