|
[Deprecated API] | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | CURRENT API | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Object
|
+--com.interface21.transaction.support.AbstractPlatformTransactionManager
|
+--com.interface21.orm.hibernate.HibernateTransactionManager
PlatformTransactionManager implementation for single Hibernate session factories. Binds a Hibernate Session from the specified factory to the thread, potentially allowing for one thread Session per factory. SessionFactoryUtils and HibernateTemplate are aware of thread-bound Sessions and take part in such transactions automatically. Using either is required for proper Hibernate access code supporting this transaction handling mechanism. Supports custom isolation levels but not timeouts.
This implementation is appropriate for applications that solely use Hibernate for transactional data access, but it also supports direct data source access within a transaction (i.e. plain JDBC code working with the same DataSource). This allows for mixing services that access Hibernate including proper transactional caching, and services that use plain JDBC without being aware of Hibernate! To be able to register the Connection for plain JDBC code, the instance needs to be aware of the DataSource (see setDataSource). Application code needs to stick to the same Connection lookup pattern as with DataSourceTransactionManager (i.e. DataSourceUtils.getConnection).
JTA resp. JtaTransactionManager is necessary for accessing multiple transactional resources. The DataSource that Hibernate uses needs to be JTA-enabled then (see container setup), alternatively the Hibernate JCA connector can to be used for direct container integration. Normally, Hibernate JTA setup is somewhat container-specific due to the JTA TransactionManager lookup, required for proper transactional handling of the JVM-level cache. Using the JCA Connector can solve this but involves classloading issues and container-specific connector deployment. Fortunately, there is an easier way with Spring: SessionFactoryUtils' close and thus HibernateTemplate register synchronizations with JtaTransactionManager, for proper completion callbacks. Therefore, as long as JtaTransactionManager demarcates the JTA transactions, Hibernate does not require any special JTA configuration for proper JTA.
Note: This class, like all of Spring's Hibernate support, requires Hibernate 2.0 (initially developed with RC1).
SessionFactoryUtils.getSession(net.sf.hibernate.SessionFactory, boolean),
SessionFactoryUtils.closeSessionIfNecessary(net.sf.hibernate.Session, net.sf.hibernate.SessionFactory),
HibernateTemplate.execute(com.interface21.orm.hibernate.HibernateCallback),
setDataSource(javax.sql.DataSource),
DataSourceTransactionManager,
DataSourceUtils.getConnection(javax.sql.DataSource)| Fields inherited from class com.interface21.transaction.support.AbstractPlatformTransactionManager |
logger |
| Constructor Summary | |
HibernateTransactionManager()
Create a new HibernateTransactionManager instance. |
|
HibernateTransactionManager(net.sf.hibernate.SessionFactory sessionFactory,
javax.sql.DataSource dataSource)
Create a new HibernateTransactionManager instance. |
|
| Method Summary | |
void |
afterPropertiesSet()
Invoked by a BeanFactory after it has set all bean properties supplied. |
protected void |
doBegin(java.lang.Object transaction,
int isolationLevel,
int timeout)
Begin a new transaction with the given isolation level. |
protected void |
doCommit(TransactionStatus status)
Perform an actual commit on the given transaction. |
protected java.lang.Object |
doGetTransaction()
Return a current transaction object, i.e. a JTA UserTransaction. |
protected void |
doRollback(TransactionStatus status)
Perform an actual rollback on the given transaction. |
protected void |
doSetRollbackOnly(TransactionStatus status)
Set the given transaction rollback-only. |
javax.sql.DataSource |
getDataSource()
Return the J2EE DataSource that this instance manages transactions for. |
net.sf.hibernate.SessionFactory |
getSessionFactory()
Return the SessionFactory that this instance should manage transactions for. |
protected boolean |
isExistingTransaction(java.lang.Object transaction)
Check if the given transaction object indicates an existing, i.e. already begun, transaction. |
void |
setDataSource(javax.sql.DataSource dataSource)
Set the J2EE DataSource that this instance should manage transactions for (i.e. register the Hibernate transaction's JDBC connection to provide it to application code accessing this DataSource). |
void |
setSessionFactory(net.sf.hibernate.SessionFactory sessionFactory)
Set the SessionFactory that this instance should manage transactions for. |
| Methods inherited from class com.interface21.transaction.support.AbstractPlatformTransactionManager |
commit, getAllowNonTransactionalExecution, getTransaction, getTransactionSynchronization, rollback, setAllowNonTransactionalExecution, setTransactionSynchronization |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public HibernateTransactionManager()
setSessionFactory(net.sf.hibernate.SessionFactory)
public HibernateTransactionManager(net.sf.hibernate.SessionFactory sessionFactory,
javax.sql.DataSource dataSource)
sessionFactory - SessionFactory to manage transactions fordataSource - DataSource to manage transactions for| Method Detail |
public void setSessionFactory(net.sf.hibernate.SessionFactory sessionFactory)
public net.sf.hibernate.SessionFactory getSessionFactory()
public final void setDataSource(javax.sql.DataSource dataSource)
public javax.sql.DataSource getDataSource()
public void afterPropertiesSet()
InitializingBeanafterPropertiesSet in interface InitializingBeancom.interface21.beans.factory.InitializingBeanjava.lang.Exception - in the event of misconfiguration (such
as failure to set an essential property) or if initialization fails.
protected java.lang.Object doGetTransaction()
throws CannotCreateTransactionException,
TransactionException
AbstractPlatformTransactionManagerdoGetTransaction in class AbstractPlatformTransactionManagercom.interface21.transaction.support.AbstractPlatformTransactionManagerCannotCreateTransactionException - if transaction support is
not available (e.g. no JTA UserTransaction retrievable from JNDI)TransactionException - in case of lookup or system errors
protected boolean isExistingTransaction(java.lang.Object transaction)
throws TransactionException
AbstractPlatformTransactionManagerisExistingTransaction in class AbstractPlatformTransactionManagercom.interface21.transaction.support.AbstractPlatformTransactionManagertransaction - transaction object returned by doGetTransaction()TransactionException - in case of system errors
protected void doBegin(java.lang.Object transaction,
int isolationLevel,
int timeout)
throws TransactionException
AbstractPlatformTransactionManagerdoBegin in class AbstractPlatformTransactionManagercom.interface21.transaction.support.AbstractPlatformTransactionManagertransaction - transaction object returned by doGetTransaction()isolationLevel - desired isolation leveltimeout - transaction timeout (in seconds)TransactionException - in case of creation or system errors
protected void doCommit(TransactionStatus status)
throws TransactionException
AbstractPlatformTransactionManagerdoCommit in class AbstractPlatformTransactionManagercom.interface21.transaction.support.AbstractPlatformTransactionManagerstatus - status representation of the transactionTransactionException - in case of commit or system errors
protected void doRollback(TransactionStatus status)
throws TransactionException
AbstractPlatformTransactionManagerdoRollback in class AbstractPlatformTransactionManagercom.interface21.transaction.support.AbstractPlatformTransactionManagerstatus - status representation of the transactionTransactionException - in case of system errors
protected void doSetRollbackOnly(TransactionStatus status)
throws TransactionException
AbstractPlatformTransactionManagerdoSetRollbackOnly in class AbstractPlatformTransactionManagercom.interface21.transaction.support.AbstractPlatformTransactionManagerstatus - status representation of the transactionTransactionException - in case of system errors
|
[Deprecated API] | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | CURRENT API | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||