Ressourcenrollen und ihren Lebenszyklus eindeutig modellieren.
Ein Pool verwaltet Verbindungen, eine Verbindung verwaltet eine Transaktion und ein Cursor führt Anweisungen aus. Diese Rollen sind nicht austauschbar. Jede Ausleihe braucht eine garantierte Rückgabe; jeder Cursor einen Schlussweg für Erfolg und Fehler. Kontextmanager machen diesen Besitz im Code sichtbar.
Ein Beispiel
Ein Adapter leiht eine Verbindung aus, öffnet darin einen Cursor und gibt beide in umgekehrter Reihenfolge zurück – auch wenn das Lesen scheitert.