Transactions can be used to bracket multiple interactions with the Repository. Changes to a Repository that are a result of such interactions are either all committed or all undone, depending upon the way that the transaction is completed. Repository methods that write data to the Repository can be executed only within a transaction. Methods that read data from the Repository can be executed without a transaction (although such reads can be done against partially updated data).
A Repository database can have multiple Repository instances connected to it simultaneously, from the same or from different processes. Each Repository instance can have at most one transaction active at a time.
As a rule, the Repository engine never implicitly cancels transactions. If a failure occurs, you must explicitly cancel the transaction. There is one exception to this rule: If you start a transaction, and then release the Repository instance to which the transaction belongs, your transaction will be canceled.