Top Description Constructors Methods
org.eclipse.persistence.jpa

public Class JpaHelper

extends Object
Class Inheritance
Imports
jakarta.persistence.EntityManagerFactory, .Query, org.eclipse.persistence.internal.jpa.*, org.eclipse.persistence.internal.localization.ExceptionLocalization, org.eclipse.persistence.jpa.JpaEntityManager, org.eclipse.persistence.queries.*, .FetchGroupTracker, org.eclipse.persistence.sessions.DatabaseSession, org.eclipse.persistence.sessions.server.Server, .ServerSession, org.eclipse.persistence.sessions.broker.SessionBroker, org.eclipse.persistence.sessions.factories.SessionFactory

This sample illustrates the JPA helper methods that may be of use to EclipseLink customers attempting to leverage EclipseLink specific functionality.
Author
dclarke, gpelletie

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static EntityManagerFactory
createEntityManagerFactory(Server session)

Create a EclipseLink EMF given a ServerSession that has already been created and logged in.

public static EntityManagerFactory
createEntityManagerFactory(String sessionName)

Create a EclipseLink EMF using a session name and sessions.xml.

public static Query
createQuery(DatabaseQuery query, EntityManager em)

Create a EclipseLink JPA query dynamically given a EclipseLink query.

public static DatabaseQuery
getDatabaseQuery(Query query)

Access the internal EclipseLink query wrapped within the JPA query.

public static DatabaseSession
getDatabaseSession(EntityManagerFactory emf)

Retrieve the shared database session from the EMF.

public static JpaEntityManager
getEntityManager(EntityManager entityManager)

Convert a JPA entityManager into a EclipseLink specific one.

public static EntityManagerFactoryImpl
getEntityManagerFactory(EntityManagerFactoryImpl emf)

Deprecated
Given a JPA EntityManagerFactory attempt to cast it to a EclipseLink EMF.
public static JpaEntityManagerFactory
getEntityManagerFactory(EntityManagerFactory emf)

Given a JPA EntityManagerFactory attempt to cast it to a EclipseLink EMF.

public static JpaEntityManagerFactory
getEntityManagerFactory(EntityManager em)

Given an EntityManager return the EntityManagerFactory that created it.

public static ReadAllQuery
getReadAllQuery(Query query)

Access the internal EclipseLink query wrapped within the JPA query.

public static ReportQuery
getReportQuery(Query query)

Access the internal EclipseLink query wrapped within the JPA query.

public static Server
getServerSession(EntityManagerFactory emf)

Retrieve the shared server session from the EMF.

public static SessionBroker
getSessionBroker(EntityManagerFactory emf)

Retrieve the shared session broker from the EMF.

public static boolean
isReportQuery(Query query)

Determine if the JPA query is a EclipseLink ReportQuery.

public static void
loadUnfetchedObject(FetchGroupTracker entity)

If the object has a fetch group then the whole object is read in.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

JpaHelperback to summary
private JpaHelper()

Method Detail

createEntityManagerFactoryback to summary
public static EntityManagerFactory createEntityManagerFactory(Server session)

Create a EclipseLink EMF given a ServerSession that has already been created and logged in.

createEntityManagerFactoryback to summary
public static EntityManagerFactory createEntityManagerFactory(String sessionName)

Create a EclipseLink EMF using a session name and sessions.xml. This is equivalent to using the EclipseLink.session-xml and EclipseLink.session-name PU properties with the exception that no persistence.xml is required. The application would be required to manage this singleton EMF.

createQueryback to summary
public static Query createQuery(DatabaseQuery query, EntityManager em)

Create a EclipseLink JPA query dynamically given a EclipseLink query.

getDatabaseQueryback to summary
public static DatabaseQuery getDatabaseQuery(Query query)

Access the internal EclipseLink query wrapped within the JPA query.

getDatabaseSessionback to summary
public static DatabaseSession getDatabaseSession(EntityManagerFactory emf)

Retrieve the shared database session from the EMF.

getEntityManagerback to summary
public static JpaEntityManager getEntityManager(EntityManager entityManager)

Convert a JPA entityManager into a EclipseLink specific one. This will work both within a JavaSE deployment as well as within a container where the EntityManager may be wrapped. In the case where the container is not in a transaction it may return null for its delegate. When this happens the only way to access an EntityManager is to use the EntityManagerFactory to create a temporary one where the application manage its lifecycle.

getEntityManagerFactoryback to summary
public static EntityManagerFactoryImpl getEntityManagerFactory(EntityManagerFactoryImpl emf)

Deprecated

Given a JPA EntityManagerFactory attempt to cast it to a EclipseLink EMF. Although this method currently returns an instance of EntityManagerFactoryImpl, it is recommended that users cast to JpaEntityManagerFactory. Future versions of EclipseLink will return that interface from this method instead

Annotations
@Deprecated
See Also
JpaEntityManagerFactory
getEntityManagerFactoryback to summary
public static JpaEntityManagerFactory getEntityManagerFactory(EntityManagerFactory emf)

Given a JPA EntityManagerFactory attempt to cast it to a EclipseLink EMF.

See Also
JpaEntityManagerFactory
getEntityManagerFactoryback to summary
public static JpaEntityManagerFactory getEntityManagerFactory(EntityManager em)

Given an EntityManager return the EntityManagerFactory that created it. This method must be called on an open entity manager and will return null if called on a closed entityManager. This method will return null for non-EclipseLink EntityManagers.

See Also
JpaEntityManagerFactory
getReadAllQueryback to summary
public static ReadAllQuery getReadAllQuery(Query query)

Access the internal EclipseLink query wrapped within the JPA query. A EclipseLink JPA created from JP QL only contains a ReadAllQuery if only a single entity type is being returned. A ReadAllQuery is the super class of a ReportQuery so this method will always work for either a ReportQuery or ReadAllQuery.

getReportQueryback to summary
public static ReportQuery getReportQuery(Query query)

Access the internal EclipseLink query wrapped within the JPA query. A EclipseLink JPA created from JP QL contains a ReportQuery if multiple items or a non-entity type is being returned. This method will fail if a single entity type is being returned as the query is a ReadAllQuery.

See Also
JpaHelper#getReadAllQuery
getServerSessionback to summary
public static Server getServerSession(EntityManagerFactory emf)

Retrieve the shared server session from the EMF.

getSessionBrokerback to summary
public static SessionBroker getSessionBroker(EntityManagerFactory emf)

Retrieve the shared session broker from the EMF.

isReportQueryback to summary
public static boolean isReportQuery(Query query)

Determine if the JPA query is a EclipseLink ReportQuery. Useful for frameworks that want to determine which get_X_Query method they can safely invoke.

loadUnfetchedObjectback to summary
public static void loadUnfetchedObject(FetchGroupTracker entity)

If the object has a fetch group then the whole object is read in.