Class EMFProviderCMT

java.lang.Object
com.isomorphic.jpa.EMFProviderCMT
All Implemented Interfaces:
EMFProviderInterface

public class EMFProviderCMT extends Object implements EMFProviderInterface
EMF provider for Container Managed Transactions (CMT).

Use this provider if you want to use JPA data source in EJB environment (accessing JPA data source from enterprise bean). Values from jpa.entityManager and jpa.entityManagerFactory properties are used to locate EntityManager and EntityManagerFactory in container's environment context via JNDI. For this implementation to work persistence-context-ref and persistence-unit-ref should be declared for enterprise bean in /META-INF/ejb-jar.xml. For example:

 <?xml version="1.0" encoding="UTF-8"?>
 <ejb-jar
      version = "3.0"
      xmlns = "http://java.sun.com/xml/ns/javaee"
      xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
      <enterprise-beans>
          <session>
              <ejb-name>TestEJB</ejb-name>
              <persistence-context-ref>
                  <persistence-context-ref-name>REFERENCE_TO_ENTITY_MANAGER</persistence-context-ref-name>
                  <persistence-unit-name>PERSISTENCE_UNIT_NAME</persistence-unit-name>
              </persistence-context-ref>
              <persistence-unit-ref>
                  <persistence-unit-ref-name>REFERENCE_TO_ENTITY_MANAGER_FACTORY</persistence-unit-ref-name>
                  <persistence-unit-name>PERSISTENCE_UNIT_NAME</persistence-unit-name>
              </persistence-unit-ref>
         </session>
     </enterprise-beans>
 </ejb-jar>
 
getTransaction() will return instance of EJBContext located in "java:comp/EJBContext" in JNDI. Transaction will be committed by container. To roll back transaction EJBContext.setRollbackOnly() is used.
  • Field Details

    • entityManagerRef

      public String entityManagerRef
      Name of the reference to container managed entity manager.
    • entityManagerFactoryRef

      public String entityManagerFactoryRef
      Name of the reference to managed entity manager factory.
  • Constructor Details

    • EMFProviderCMT

      public EMFProviderCMT()
      Creates new EMF provider. Values from jpa.entityManager and jpa.entityManagerFactory properties are used to locate EntityManager and EntityManagerFactory in container's environment context.
    • EMFProviderCMT

      public EMFProviderCMT(Properties config)
      Creates new EMF provider. Values from provided properties entityManager and entityManagerFactory are used to locate EntityManager and EntityManagerFactory in container's environment context.
      Parameters:
      config - Properties for provider configuration.
    • EMFProviderCMT

      public EMFProviderCMT(String entityManagerRef, String entityManagerFactoryRef)
      Creates new EMF provider with specified context reference names.
      Parameters:
      entityManagerRef - String name of context reference to entity manager.
      entityManagerFactoryRef - String name of context reference to entity manager factory.
  • Method Details

    • get

      public jakarta.persistence.EntityManagerFactory get()
      Returns EntityManagerFactory found in container's environment context.
      Specified by:
      get in interface EMFProviderInterface
      Returns:
      EntityManagerFactory can be used to acquire meta-data (for JPA 2.0) or implement "application managed entity manager" pattern.
    • getEntityManager

      public jakarta.persistence.EntityManager getEntityManager() throws jakarta.persistence.PersistenceException
      Returns EntityManager found in container's environment context.
      Specified by:
      getEntityManager in interface EMFProviderInterface
      Returns:
      EntityManager for persistence operations.
      Throws:
      jakarta.persistence.PersistenceException - if unable to acquire EntityManager.
    • returnEntityManager

      public void returnEntityManager(jakarta.persistence.EntityManager em)
      Does nothing - container will close EntityManager.
      Specified by:
      returnEntityManager in interface EMFProviderInterface
      Parameters:
      em - EntityManager which should be closed.
    • getTransaction

      public Object getTransaction(jakarta.persistence.EntityManager em) throws Exception
      Returns EJBContext found in container's environment context.
      Specified by:
      getTransaction in interface EMFProviderInterface
      Parameters:
      em - EntityManager needed if joining to existing transaction or null.
      Returns:
      Object Transaction for persistence operations.
      Throws:
      jakarta.persistence.PersistenceException - if unable to acquire or open transaction.
      Exception - if unable to acquire or open transaction.
    • commitTransaction

      public void commitTransaction(Object tx) throws Exception
      Does nothing - container will commit transaction.
      Specified by:
      commitTransaction in interface EMFProviderInterface
      Parameters:
      tx - Object transaction to be commited.
      Throws:
      Exception - occured while committing transaction.
    • rollbackTransaction

      public void rollbackTransaction(Object tx)
      Sets rollback flag for transaction by tx.setRollbackOnly().
      Specified by:
      rollbackTransaction in interface EMFProviderInterface
      Parameters:
      tx - Object transaction to be rolled back.