I'm Brett Slatkin and this is where I write about programming and related topics. You can contact me here or view my projects.

01 July 2013

Lazy-loading is the ORM anti-pattern

The creator of SQLAlchemy on async operation:

ORMs are poorly suited for explicit asynchronous programming, that is, where the programmer must produce explicit callbacks anytime something that uses network access occurs. A primary reason for this is that ORMs make extensive use of the lazy loading pattern, which is more or less incompatible with explicit async.

I could not disagree more. App Engine's NDB library is amazing at async. It was designed by Guido and likely was the inspiration for PEP 3156. It is the best ORM I have ever used. It enables refactoring and performance optimization.

I like and use SQLAlchemy, but the real takeaway here is lazy-loading is an anti-pattern.
© 2009-2019 Brett Slatkin