Difference between revisions of "EclipseLink/Examples/JPA/ORMSessions"

From Eclipsepedia

Jump to: navigation, search
(Session Manager)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
Sessions are a key component of the EclipseLink Server application— they provide EclipseLink with access to the database. Sessions enable you to execute queries, and they return persistent objects and other results for client applications.
 
Sessions are a key component of the EclipseLink Server application— they provide EclipseLink with access to the database. Sessions enable you to execute queries, and they return persistent objects and other results for client applications.
  
= Session Manager =
+
See [[EclipseLink/UserGuide/Using_EclipseLink_Sessions_%28ELUG%29|Using EclipseLink Sessions]] for complete information.
The EclipseLink session manager enables developers to build a series of sessions that are maintained under a single entity. The session manager is a static utility class that loads EclipseLink sessions from the sessions.xml file, caches the sessions by name in memory, and provides a single access point for EclipseLink sessions.
+
  
== Loading a Session Manager Instance ==
 
<code><pre>
 
import org.eclipse.persistence.tools.sessionmanagement.SessionManager;
 
SessionManager sessionManager = SessionManager.getManager();
 
</pre></code>
 
  
EclipseLink uses a class loader to load the session manager. The session manager, in turn, uses that same class loader to load named sessions that are not already initialized in the session manager cache.
 
  
== Loading a Named Session from Session Manager Using Defaults ==
+
= Session Manager =
<code><pre>
+
The [[Acquiring_and_Using_Sessions_at_Run_Time_%28ELUG%29#Session_Manager|EclipseLink session manager]] enables developers to build a series of sessions that are maintained under a single entity. The session manager is a static utility class that loads EclipseLink sessions from the sessions.xml file, caches the sessions by name in memory, and provides a single access point for EclipseLink sessions.
/* This example loads a named session (mysession) defined in the sessions.xml file. */
+
SessionManager manager = SessionManager.getManager();
+
Server server = (Server) manager.getSession("myserversession");
+
</pre></code>
+
  
== Loading a Session with an Alternative Class Loader ==
+
For specific examples, see:
You can use an alternative class loader to load sessions. This is common when your EclipseLink application integrates with a J2EE container. If the session is not already in the session manager's in-memory cache of sessions, the session manager creates the session and logs in.
+
*[[Acquiring_and_Using_Sessions_at_Run_Time_%28ELUG%29#Acquiring_the_Session_Manager| Loading a Session Manager Instance]]
 +
*[[Acquiring_and_Using_Sessions_at_Run_Time_%28ELUG%29#How_to_Load_a_Session_from_sessions.xml_Using_Defaults|Loading a Named Session from Session Manager Using Defaults]]
 +
*[[Acquiring_and_Using_Sessions_at_Run_Time_%28ELUG%29#How_to_Load_a_Session_from_sessions.xml_with_an_Alternative_Class_Loader|Loading a Session with an Alternative Class Loader]]
 +
*[[Acquiring_and_Using_Sessions_at_Run_Time_%28ELUG%29#How_to_Load_a_Session_from_an_Alternative_Session_Configuration_File|Loading an Alternative Session Configuration File]]
  
<code><pre>
 
/* This example uses the specified ClassLoader to load a session (mysession) defined in the sessions.xml file. */
 
ClassLoader classLoader = YourApplicationClass.getClassLoader();
 
SessionManager manager = SessionManager.getManager();
 
Session session = manager.getSession("mysession", classLoader);
 
</pre></code>
 
  
== Loading an Alternative Session Configuration File ==
 
You can use the XML Session Config Loader to load any XML configuration file on the application class path. This enables you to use files other than the standard sessions.xml file to load sessions.
 
You can use the XML Session Config loader to load different sessions, and even different class loaders, from configuration files. The XMLSessionConfigLoader class defines two constructors:
 
* The zero-argument constructor loads the default sessions.xml file.
 
* The single argument constructor includes a parameter (a String) that specifies an alternative configuration file.
 
 
<core><pre>
 
/* XMLSessionConfigLoader loads the toplink-sessions.xml file */
 
XMLSessionConfigLoader sessionLoader = new XMLSessionConfigLoader("toplink-sessions.xml");
 
ClassLoader classLoader = YourApplicationClass.getClassLoader();
 
SessionManager manager = SessionManager.getManager();
 
Session session = manager.getSession(sessionLoader, "mysessionname", classLoader);
 
</pre></code>
 
  
 
= Session Factory =
 
= Session Factory =
Helper class to simplify the development and generation of code that accesses EclipseLink through the SessionManager (sessions config XML).
+
Alternatively you may use the SessionFactory which is a Helper class to simplify the development and generation of code that accesses EclipseLink through the SessionManager (sessions config XML).
  
 
Responsibilities:
 
Responsibilities:
Line 51: Line 24:
 
* Hot/Re-deployment handling of applications
 
* Hot/Re-deployment handling of applications
 
* Detachment helpers to simplify usage within a local session bean
 
* Detachment helpers to simplify usage within a local session bean
 +
 +
 +
 +
== Create a Session Factory that uses the default sessions.xml file ==
 +
 +
<source lang="java">
 +
SessionFactory sessionFactory = new SessionFactory("session-name");
 +
Session sessionFactory.getSharedSession(); // By default this will log the session in.
 +
</source>
 +
 +
 +
== Create a Session Factory that loads an alternative XML Configuration file ==
 +
The alternative xml file name must be a resource path to the sessions configuration xml.
 +
 +
<source lang="java">
 +
SessionFactory sessionFactory = new SessionFactory("app-session.xml", "session-name");
 +
Session session = sessionFactory.getSharedSession(false, true); // Don't log the session in, but refresh it.
 +
</source>

Latest revision as of 16:05, 23 June 2008

Sessions are a key component of the EclipseLink Server application— they provide EclipseLink with access to the database. Sessions enable you to execute queries, and they return persistent objects and other results for client applications.

See Using EclipseLink Sessions for complete information.


Contents

[edit] Session Manager

The EclipseLink session manager enables developers to build a series of sessions that are maintained under a single entity. The session manager is a static utility class that loads EclipseLink sessions from the sessions.xml file, caches the sessions by name in memory, and provides a single access point for EclipseLink sessions.

For specific examples, see:


[edit] Session Factory

Alternatively you may use the SessionFactory which is a Helper class to simplify the development and generation of code that accesses EclipseLink through the SessionManager (sessions config XML).

Responsibilities:

  • Lookup of a session by name using default or provided sessions config location
  • Support lookup of active UnitOfWork and Session in JTA environments
  • Hot/Re-deployment handling of applications
  • Detachment helpers to simplify usage within a local session bean


[edit] Create a Session Factory that uses the default sessions.xml file

SessionFactory sessionFactory = new SessionFactory("session-name");
Session sessionFactory.getSharedSession(); // By default this will log the session in.


[edit] Create a Session Factory that loads an alternative XML Configuration file

The alternative xml file name must be a resource path to the sessions configuration xml.

SessionFactory sessionFactory = new SessionFactory("app-session.xml", "session-name");
Session session = sessionFactory.getSharedSession(false, true); // Don't log the session in, but refresh it.