org.clazzes.util.jpa.provider
Class EntityManagerFactoryFactory

java.lang.Object
  extended by org.clazzes.util.jpa.provider.EntityManagerFactoryFactory

public class EntityManagerFactoryFactory
extends java.lang.Object

This class is used to instantiate an EntityManagerFactory from a PersistenceUnitInfo instance.

This class mainly tackles the issue of setting the context class loader to the class loader of the persistence unit, while delegating the actual task to PersistenceProvider.createContainerEntityManagerFactory(PersistenceUnitInfo, Map).

This is necessary for some buggy persistence providers, which otherwise fail to enhance classes.

A typical usage inside a blueprint container is:

  <bp:reference id="persistenceProvider" interface="javax.persistence.spi.PersistenceProvider"/>
   
  <bp:bean id="entityManagerFactoryFactory" class="org.clazzes.util.jpa.provider.EntityManagerFactoryFactory">
    <bp:property name="persistenceProvider" ref="persistenceProvider"/>
    <bp:property name="persistenceUnitInfo" ref="persistenceUnitInfo"/>
    <bp:property name="properties">
      <bp:map>
       <bp:entry key="openjpa.Log" value="commons"/>
       </bp:map>   
    </bp:property>
  </bp:bean>
 


Constructor Summary
EntityManagerFactoryFactory()
           
 
Method Summary
 void addProperty(java.lang.String key, java.lang.String value)
          Add a vendor-specific property.
 javax.persistence.spi.PersistenceProvider getPersistenceProvider()
           
 javax.persistence.spi.PersistenceUnitInfo getPersistenceUnitInfo()
           
 java.util.Map<java.lang.String,java.lang.String> getProperties()
           
 javax.persistence.EntityManagerFactory newEntityManagerFactory()
          Call PersistenceProvider.createEntityManagerFactory(String, java.util.Map) using the provided properties.
 void setPersistenceProvider(javax.persistence.spi.PersistenceProvider persistenceProvider)
           
 void setPersistenceUnitInfo(javax.persistence.spi.PersistenceUnitInfo persistenceUnitInfo)
           
 void setProperties(java.util.Map<java.lang.String,java.lang.String> properties)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EntityManagerFactoryFactory

public EntityManagerFactoryFactory()
Method Detail

newEntityManagerFactory

public javax.persistence.EntityManagerFactory newEntityManagerFactory()
Call PersistenceProvider.createEntityManagerFactory(String, java.util.Map) using the provided properties. This method sets the context class loader to the class loader of the provided context class in order to allow the JPA provider to resolve the application's classes.

Returns:
A new EntityManagerFactory for use in interceptors. Please be sure to close the returned factory at the end of your bundle's lifecycle.

getPersistenceProvider

public javax.persistence.spi.PersistenceProvider getPersistenceProvider()
Returns:
the persistenceProvider usually injected using blueprint.

setPersistenceProvider

public void setPersistenceProvider(javax.persistence.spi.PersistenceProvider persistenceProvider)
Parameters:
persistenceProvider - the persistenceProvider, which is typically a service reference obtained by blueprint.

getPersistenceUnitInfo

public javax.persistence.spi.PersistenceUnitInfo getPersistenceUnitInfo()
Returns:
the persistenceUnitInfo
See Also:
PersistenceUnitInfoImpl

setPersistenceUnitInfo

public void setPersistenceUnitInfo(javax.persistence.spi.PersistenceUnitInfo persistenceUnitInfo)
Parameters:
persistenceUnitInfo - the persistenceUnitInfo to set
See Also:
PersistenceUnitInfoImpl

getProperties

public java.util.Map<java.lang.String,java.lang.String> getProperties()
Returns:
Additional vendor-specific properties, which are configured outside persistence.xml.

setProperties

public void setProperties(java.util.Map<java.lang.String,java.lang.String> properties)
Parameters:
properties - Additional vendor-specific properties, which are configured outside persistence.xml to set.

addProperty

public void addProperty(java.lang.String key,
                        java.lang.String value)
Add a vendor-specific property.

Parameters:
key - The name of the property.
value - The value of the property.


Copyright © 2011. All Rights Reserved.