## org.springframework.orm.toplink
Interface SessionFactory

All Known Implementing Classes:
  AbstractSessionFactory, ServerSessionFactory, SessionBrokerSessionFactory, 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 © 2002-2008 The Spring Framework.