Package de.xima.fc.filter.db
Class PluginEmManager
java.lang.Object
de.xima.fc.filter.db.PluginEmManager
- All Implemented Interfaces:
IPluginEmManager
A manager for an
EntityManager
that can be used by a plugin of type IPluginEntities
. It is meant to
be used within the backend of formcycle, ie for all formcycle urls that start with /ui
or /portal
. It
takes care of creating a new entity manager when required or reusing an old one. When you use this manager, the
EntityManager
will also be closed automatically once a HTTP requests finishes. Create an instance of this
class by passing it the EntityManagerFactory
instance you received from
IPluginEntitiesParams.getEntityManagerFactory()
.- Author:
- XIMA MEDIA GmbH
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Begins a new transation, if no transaction is currently active.static void
closeAll()
void
If theEntityManager
associated with the current thread is open, close it.void
commit()
If a transaction is currently active, commits it.javax.persistence.EntityManager
javax.persistence.EntityManager
boolean
isEntityDetached
(Object entity) Checks whether a given entity is currently detached, ie not managed by the entity manager.boolean
de.xima.cmn.dao.interfaces.IBaseEntityContext
This creates a newIBaseEntityContext
you can use to read or write plugin entities.void
rollback()
If a transaction is currently active, performs a rollback of that transaction.static void
-
Constructor Details
-
PluginEmManager
public PluginEmManager(javax.persistence.EntityManagerFactory factory)
-
-
Method Details
-
beginTransaction
public void beginTransaction()Description copied from interface:IPluginEmManager
Begins a new transation, if no transaction is currently active. Creates a new entity manager if noEntityManager
is associated with the current thread.- Specified by:
beginTransaction
in interfaceIPluginEmManager
-
closeEntityManager
public void closeEntityManager()Description copied from interface:IPluginEmManager
If theEntityManager
associated with the current thread is open, close it. Otherwise, does nothing.- Specified by:
closeEntityManager
in interfaceIPluginEmManager
-
commit
public void commit()Description copied from interface:IPluginEmManager
If a transaction is currently active, commits it. Otherwise, does nothing.- Specified by:
commit
in interfaceIPluginEmManager
-
getEntityManager
public javax.persistence.EntityManager getEntityManager()- Specified by:
getEntityManager
in interfaceIPluginEmManager
- Returns:
- The
EntityManager
associated with the current thread. If no entity manager exists yet, returnsnull
.
-
getOrCreateEntityManager
public javax.persistence.EntityManager getOrCreateEntityManager()- Specified by:
getOrCreateEntityManager
in interfaceIPluginEmManager
- Returns:
- The
EntityManager
associated with the current thread. If no entity manager exists yet, creates a new one.
-
isEntityDetached
Description copied from interface:IPluginEmManager
Checks whether a given entity is currently detached, ie not managed by the entity manager.- Specified by:
isEntityDetached
in interfaceIPluginEmManager
- Parameters:
entity
- An entity to check.- Returns:
- Whether the given entity is currently managed by the entity manager.
-
isTransactionActive
public boolean isTransactionActive()- Specified by:
isTransactionActive
in interfaceIPluginEmManager
- Returns:
- Whether a transaction is currently active.
-
newEntityContext
public de.xima.cmn.dao.interfaces.IBaseEntityContext newEntityContext()Description copied from interface:IPluginEmManager
This creates a newIBaseEntityContext
you can use to read or write plugin entities. Make sure you always wrap this call in atry-with statement
to ensure it is properly closed. This will take care of closing the underlyingEntityManager
at the appropriate time. Note that when you are within a backend context (eg a backend configuration menu or a portal page), the underlying entity manager is created only once for each HTTP request and reused during the request.You should use this method as follows:
try (final IBaseEntityContext ec = pluginEmManager.newEntityContext()) { // use entity context with some DAO // this fetches all existing MyEntity new AbstractDao<MyEntity, Long, IBaseEntityContext>(MyEntity.class) {}.all(null, new QueryCriteriaManager()); }
- Specified by:
newEntityContext
in interfaceIPluginEmManager
- Returns:
- A new
IBaseEntityContext
that can be used with the DAO API of formcycle.
-
rollback
public void rollback()Description copied from interface:IPluginEmManager
If a transaction is currently active, performs a rollback of that transaction. Otherwise, does nothing.- Specified by:
rollback
in interfaceIPluginEmManager
-
closeAll
public static void closeAll() -
rollbackAll
public static void rollbackAll()
-