anchor.diff:  }
   ----
   
  +=== Transaction Management
  +
  +You may declare transactions with SqlObject annotations:
  +
  +[source,java,indent=0]
  +----
  +include::{exampledir}/TransactionTest.java[tags=sqlObjectTransaction]
  +----
  +
  +SQL methods with a `@Transaction` annotation may optionally specify a
  +transaction isolation level:
  +
  +[source,java,indent=0]
  +----
  +include::{exampledir}/TransactionTest.java[tags=sqlObjectTransactionIsolation]
  +----
  +
  +If a `@Transaction` method calls another `@Transaction` method, they must
  +specify the same isolation level, or the inner method must not specify
  +anything, in which case the isolation level of the outer method is used.
  +
  +[source,java,indent=0]
  +----
  +include::{exampledir}/TransactionTest.java[tags=sqlObjectNestedTransaction]
  +----
  +
  +TODO: Demonstrate Transactional mixin
  +
  +* Call methods on the mixin to begin, checkpoint, rollback, and commit
  +  transactions.
  +* Be careful using this mixin with on-demand SQL Objects. Only use
  +  inTransaction or useTransaction. None of the others will do what you expect.
  +
   === Using SQL Objects
   
   Once you've defined your interface, there are a few ways to get an instance of
  
positive.code: SqlLocator, which can load SQL templates from StringTemplate 4 files on the
  classpath.
  
  ==== Transactions
  
  You may declare transactions with SqlObject annotations:
  
  [source,java,indent=0]
  ----
  include::{exampledir}/TransactionTest.java[tags=sqlObjectTransaction]
  ----
  
  SQL methods with a `@Transaction` annotation may optionally specify a
  transaction isolation level:
  
  [source,java,indent=0]
  ----
  include::{exampledir}/TransactionTest.java[tags=sqlObjectTransactionIsolation]
  ----
  
  If a `@Transaction` method calls another `@Transaction` method, they must
  specify the same isolation level, or the inner method must not specify
  anything, in which case the isolation level of the outer method is used.
  
  [source,java,indent=0]
  ----
  include::{exampledir}/TransactionTest.java[tags=sqlObjectNestedTransaction]
  ----
  
  TODO: Demonstrate Transactional mixin
  
  * Call methods on the mixin to begin, checkpoint, rollback, and commit
    transactions.
  * Be careful using this mixin with on-demand SQL Objects. Only use
    inTransaction or useTransaction. None of the others will do what you expect.
  
  === Default Methods
  
  Occasionally a use case comes up where SQL Method annotations don't fit. In
  
negative.code: released. If you need to make successive calls to a SQL Object, consider using
  one of the above options for better performance, instead of on-demand.
  
  === Additional Annotations
  
  Jdbi provides dozens of annotations out of the box:
  
  * link:{jdbidocs}/sqlobject/config/package-summary.html[org.jdbi.v3.sqlobject.config^]
    provides annotations for things that can be configured at the `Jdbi` or
    `Handle` level. This includes registration of mappers and arguments, and for
    configuring SQL statement rendering and parsing.
  * link:{jdbidocs}/sqlobject/customizer/package-summary.html[org.jdbi.v3.sqlobject.customizer^]
    provides annotations for binding parameters, defining attributes, and
    controlling the fetch behavior of the statement's result set.
  * link:{jdbidocs}/jpa/package-summary.html[org.jdbi.v3.jpa^]
    provides the `@BindJpa` annotation, for binding properties to column according
    to JPA `@Column` annotations.
  * link:{jdbidocs}/sqlobject/locator/package-summary.html[org.jdbi.v3.sqlobject.locator^]
    provides annotations that configure Jdbi to load SQL statements from an
    alternative source, e.g. a file on the classpath.
  * link:{jdbidocs}/sqlobject/statement/package-summary.html[org.jdbi.v3.sqlobject.statement^]
    provides the `@MapTo` annotation, which is used for dynamically specifying the
    mapped type at the time the method is invoked.
  * link:{jdbidocs}/stringtemplate4/package-summary.html[org.jdbi.v3.stringtemplate4^]
    provides annotations that configure Jdbi to load SQL from StringTemplate 4
    `.stg` files on the classpath, and/or to parse SQL templates using the
    ST4 template engine.
  * link:{jdbidocs}/sqlobject/transaction/package-summary.html[org.jdbi.v3.sqlobject.transaction^]
    provides annotations for transaction management in a SQL object. See
    <<Transaction Management>> for details.
  
  Jdbi is designed to support user-defined annotations. See
  <<User-Defined Annotations>> for a guide to creating your own.
  
  == Third-Party Integration
  
  