org.springframework.orm.toplink
Interface SessionFactory

All Known Implementing Classes:
ServerSessionFactory, SingleSessionFactory

public interface SessionFactory

The SessionFactory interface serves as factory for TopLink Sessions, allowing for dependency injection on thread-safe TopLink-based DAOs. Used by TopLinkAccessor/Template and TopLinkTransactionManager.

In contrast to JDO or Hibernate (which define native PersistenceManagerFactory and SessionFactory interfaces, respectively), TopLink itself does not provide such a factory interface: hence, it is necessary to define it within Spring. Note that this interface does not depend on any other Spring interfaces or classes, to allow for keeping TopLink-based DAOs as independent as possible.

Since:
1.2
Author:
Juergen Hoeller
See Also:
TopLinkAccessor.setSessionFactory(org.springframework.orm.toplink.SessionFactory), TopLinkTransactionManager.setSessionFactory(org.springframework.orm.toplink.SessionFactory)

Method Summary
 void close()
          Close this SessionFactory, shutting down all internal resources.
 oracle.toplink.sessions.Session createManagedClientSession()
          Create a new managed TopLink client Session for the current context.
 oracle.toplink.sessions.Session createSession()
          Create a plain TopLink Session for the current application context.
 oracle.toplink.sessions.Session createTransactionAwareSession()
          Create a new transaction-aware TopLink Session that exposes the currently active Session and UnitOfWork via Session.getActiveSession and Session.getActiveUnitOfWork, respectively.
 

Method Detail

createSession

oracle.toplink.sessions.Session createSession()
                                              throws oracle.toplink.exceptions.TopLinkException
Create a plain TopLink Session for the current application context. Will usually be a new ClientSession for the current thread.

The returned Session will participate in JTA transactions (provided that TopLink is configured with a corresponding external transaction controller), but not in Spring-managed transactions (by TopLinkTransactionManager).

This is the factory method to be called by TopLink data access code, usually through the SessionFactoryUtils.getSession method that checks for a transactional (thread-bound) Session first.

Returns:
the new TopLink Session
Throws:
oracle.toplink.exceptions.TopLinkException - in case of errors
See Also:
SessionFactoryUtils.getSession(SessionFactory, boolean)

createManagedClientSession

oracle.toplink.sessions.Session createManagedClientSession()
                                                           throws oracle.toplink.exceptions.TopLinkException
Create a new managed TopLink client Session for the current context. Will usually be a new special ClientSession for the current thread.

The returned Session will be prepared to be managed within a Spring transaction (by TopLinkTransactionManager). It will carry an active UnitOfWork that expects to be committed at transaction completion, just like a plain TopLink Session does within a JTA transaction.

This method is only supposed to be called by Spring's TopLinkTransactionManager or similar TopLink-based transaction managers. If a SessionFactory does not support managed Sessions, it should throw an UnsupportedOperationException.

Returns:
the new TopLink Session
Throws:
oracle.toplink.exceptions.TopLinkException - in case of errors
See Also:
Session.getActiveUnitOfWork()

createTransactionAwareSession

oracle.toplink.sessions.Session createTransactionAwareSession()
                                                              throws oracle.toplink.exceptions.TopLinkException
Create a new transaction-aware TopLink Session that exposes the currently active Session and UnitOfWork via Session.getActiveSession and Session.getActiveUnitOfWork, respectively.

Such a Session reference can be used analogously to a managed TopLink Session in a JTA environment, with Spring-managed transactions backing it.

It is usually preferable to let DAOs work with a full SessionFactory, accessing TopLink Sessions via SessionFactoryUtils.getSession. However, a transaction-aware TopLink Session reference does not impose any Spring dependency, so might be preferable if you'd like to keep your data access code tied to TopLink API only.

Returns:
the new TopLink Session
Throws:
oracle.toplink.exceptions.TopLinkException - in case of errors
See Also:
Session.getActiveSession(), Session.getActiveUnitOfWork()

close

void close()
Close this SessionFactory, shutting down all internal resources.



Copyright (c) 2002-2005 The Spring Framework Project.