Start here. This is the direct spoken answer to practice first.
Overview
Separates fast rollback isolation from tests that must observe commits, multiple connections, or database concurrency.
For ordinary repository tests, I can open a connection, begin an outer transaction, bind a Session to it, and roll the transaction back after the test. That gives each test clean data without rebuilding the database. The fixture owns the connection and Session and never exposes them across concurrent tests. I still run against the production database engine when SQL and transaction semantics matter.