All these exceptions are unchecked, meaning that calling code can leave them uncaught and treat all data access exceptions as fatal.
The classes in this package are discussed in Chapter 9 of Expert One-On-One J2EE Design and Development by Rod Johnson (Wrox, 2002).
| CannotAcquireLockException | Exception thrown on failure to aquire a lock during an update, for example during a "select for update" statement. | 
| CannotSerializeTransactionException | Exception thrown on failure to complete a transaction in serialized mode due to update conflicts. | 
| CleanupFailureDataAccessException | Exception thrown when we couldn't cleanup after a data access operation, but the actual operation went OK. | 
| ConcurrencyFailureException | Exception thrown on concurrency failure. | 
| DataAccessException | Root of the hierarchy of data access exceptions discussed in Expert One-On-One J2EE Design and Development. | 
| DataAccessResourceFailureException | Data access exception thrown when a resource fails completely: for example, if we can't connect to a database using JDBC. | 
| DataIntegrityViolationException | Exception thrown when an attempt to insert or update data results in violation of an integrity constraint. | 
| DataRetrievalFailureException | Exception thrown if certain expected data could not be retrieved, e.g. | 
| DeadlockLoserDataAccessException | Generic exception thrown when the current process was a deadlock loser, and its transaction rolled back. | 
| DuplicateKeyException | Exception thrown when an attempt to insert or update data results in violation of an primary key or unique constraint. | 
| EmptyResultDataAccessException | Data access exception thrown when a result was expected to have at least one row (or element) but zero rows (or elements) were actually returned. | 
| IncorrectResultSizeDataAccessException | Data access exception thrown when a result was not of the expected size, for example when expecting a single row but getting 0 or more than 1 rows. | 
| IncorrectUpdateSemanticsDataAccessException | Data access exception thrown when something unintended appears to have happened with an update, but the transaction hasn't already been rolled back. | 
| InvalidDataAccessApiUsageException | Exception thrown on incorrect usage of the API, such as failing to "compile" a query object that needed compilation before execution. | 
| InvalidDataAccessResourceUsageException | Root for exceptions thrown when we use a data access resource incorrectly. | 
| NonTransientDataAccessException | Root of the hierarchy of data access exceptions that are considered non-transient - where a retry of the same operation would fail unless the cause of the Exception is corrected. | 
| NonTransientDataAccessResourceException | Data access exception thrown when a resource fails completely and the failure is permanent. | 
| OptimisticLockingFailureException | Exception thrown on an optimistic locking violation. | 
| PermissionDeniedDataAccessException | Exception thrown when the underlying resource denied a permission to access a specific element, such as a specific database table. | 
| PessimisticLockingFailureException | Exception thrown on a pessimistic locking violation. | 
| RecoverableDataAccessException | Data access exception thrown when a previously failed operation might be able to succeed if the application performs some recovery steps and retries the entire transaction or in the case of a distributed transaction, the transaction branch. | 
| TransientDataAccessException | Root of the hierarchy of data access exceptions that are considered transient - where a previously failed operation might be able to succeed when the operation is retried without any intervention by application-level functionality. | 
| TransientDataAccessResourceException | Data access exception thrown when a resource fails temporarily and the operation can be retried. | 
| TypeMismatchDataAccessException | Exception thrown on mismatch between Java type and database type: for example on an attempt to set an object of the wrong type in an RDBMS column. | 
| UncategorizedDataAccessException | Normal superclass when we can't distinguish anything more specific than "something went wrong with the underlying resource": for example, a SQLException from JDBC we can't pinpoint more precisely. |