This article is a note of Spring Data Access.
1 Transaction Management
Spring provides a consistent declarative and pgrogrammatic programming model across different transaction APIs including JTA, Hibernate, JDBC and JPA.
A transaction stragegy is defined by the following service provider interface(SPI):
TransactionStatus is associated with a thread of execution. It is stored in
TransactionDefinition interface specifies propagation, isolation, timeout, and read-only status (useful optimization in Hibernate).
The JDBC transaction manager is
DataSourceTransactionManager that need a reference to a data source. To use Hibernate local transactions
HibernateTransactionManager, you need to define a
LocalSessionFactoryBean that needs a reference to the
SessionFactory and a reference to
@Transactional only works with a class (better a concrete class) or a public method. in proxy mode, only external method calls are inercepted. Self-invocation needs AspectJ mode to use transaction.
You can also use the Spring Framework’s
@Transactional support outside of a Spring container by means of an AspectJ aspect. To do so, first annotate your classes (and optionally your classes’ methods) with the
@Transactional annotation, and then link (weave) your application with the
AnnotationTransactionAspect. To weave your applications with the AnnotationTransactionAspect, you must either build your application with AspectJ or use load-time weaving.
You can use either
TransactionTemplate or a
PlatformTransactionManager. Using the TransactionTemplate absolutely couples you to Spring’s transaction infrastructure and APIs.
2 DAO and JDBC
@Repository annotation provides exception translation and configuration. Any DAO needs access to a persistence resource such as JDBC
EntityManager) annontation to inject it.
There are several approaches to use JDBC.
JdbcTemplate: can run SQL statements and perform iteration and call a callback function. It supports batch operations.
NamedParameterJdbcTemplate: support named parameters with the
SimpleJdbcCall: use database metadata to simplify access.
StoredProcedure: access database in a more OO manner.
3 Spring Data JPA
Repository is a marker interface that takes the domain class to manage as well as the ID type of the domain class as type arguments. The
CrudRepository provides CRUD functions. The
PagingAndSortingRepository adds additinal paging functions.