Start here. This is the direct spoken answer to practice first.
Overview
Explains object identity, tracked changes, flush ordering, and the limits of session-level caching.
Within one Session, the identity map keeps one Python object for a given mapped primary key. The unit of work records new, changed, and deleted objects and turns those changes into SQL when the Session flushes. This gives consistent object identity and lets SQLAlchemy order related writes. It is not a general query cache: a normal query still goes to the database even if some returned identities are already present.