Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="UTF-8" ?>
- <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
- http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
- version="2.1">
- <persistence-unit name="my-persistence-unit"
- transaction-type="RESOURCE_LOCAL">
- <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
- <properties>
- <!-- Database Properties -->
- <property name="javax.persistence.jdbc.url"
- value="jdbc:postgresql://localhost:5432/my-database" />
- <property name="javax.persistence.jdbc.user" value="login" />
- <property name="javax.persistence.jdbc.password" value="password" />
- <!-- Hibernate Properties -->
- <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
- <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
- <property name="hibernate.default_schema" value="public" />
- <property name="hibernate.hbm2ddl.auto" value="update" />
- <property name="hibernate.show_sql" value="false" />
- <property name="hibernate.format_sql" value="true" />
- <!-- Connection Pool -->
- <property name="hibernate.c3p0.min_size" value="5" />
- <property name="hibernate.c3p0.max_size" value="20" />
- <property name="hibernate.c3p0.timeout" value="500" />
- <property name="hibernate.c3p0.max_statements" value="50" />
- <property name="hibernate.c3p0.idle_test_period" value="2000" />
- </properties>
- </persistence-unit>
- </persistence>
- <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
- http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
- version="2.1">
- <persistence-unit name="my.persistence.unit" transaction-type="RESOURCE_LOCAL">
- <provider>my.custom.package.HibernateDynamicPersistenceProvider</provider>
- <exclude-unlisted-classes>true</exclude-unlisted-classes>
- <properties>
- <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
- <property name="hibernate.max_fetch_depth" value="30" />
- <property name="hibernate.hbm2ddl.auto" value="update" />
- <property name="hibernate.show_sql" value="true" />
- </properties>
- </persistence-unit>
- /src/main/resources/META-INF/services/javax.persistence.spi.PersistenceProvider
- my.custom.package.HibernateDynamicPersistenceProvider
- public class HibernateDynamicPersistenceProvider extends HibernatePersistenceProvider implements PersistenceProvider {
- private static final Logger log = Logger.getLogger(HibernateDynamicPersistenceProvider.class);
- public static final String CUSTOM_CLASSES = "CUSTOM_CLASSES";
- @Override
- protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilder(
- PersistenceUnitDescriptor persistenceUnitDescriptor, Map integration, ClassLoader providedClassLoader) {
- if(persistenceUnitDescriptor instanceof ParsedPersistenceXmlDescriptor) {
- ParsedPersistenceXmlDescriptor tmp = (ParsedPersistenceXmlDescriptor) persistenceUnitDescriptor;
- Object object = integration.get("CUSTOM_CLASSES");
- }
- return super.getEntityManagerFactoryBuilder(persistenceUnitDescriptor, integration, providedClassLoader);
- }
- protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map properties, ClassLoader providedClassLoader) {
- log.debug( String.format("Attempting to obtain correct EntityManagerFactoryBuilder for persistenceUnitName : %s", persistenceUnitName ));
- final Map integration = wrap( properties );
- final List<ParsedPersistenceXmlDescriptor> units;
- try {
- units = PersistenceXmlParser.locatePersistenceUnits( integration );
- }
- catch (Exception e) {
- log.debug( "Unable to locate persistence units", e );
- throw new PersistenceException( "Unable to locate persistence units", e );
- }
- log.debug( String.format("Located and parsed %s persistence units; checking each", units.size() ));
- if ( persistenceUnitName == null && units.size() > 1 ) {
- // no persistence-unit name to look for was given and we found multiple persistence-units
- throw new PersistenceException( "No name provided and multiple persistence units found" );
- }
- for ( ParsedPersistenceXmlDescriptor persistenceUnit : units ) {
- log.debug( String.format(
- "Checking persistence-unit [name=%s, explicit-provider=%s] against incoming persistence unit name [%s]",
- persistenceUnit.getName(),
- persistenceUnit.getProviderClassName(),
- persistenceUnitName
- ));
- final boolean matches = persistenceUnitName == null || persistenceUnit.getName().equals( persistenceUnitName );
- if ( !matches ) {
- log.debug( "Excluding from consideration due to name mis-match" );
- continue;
- }
- // See if we (Hibernate) are the persistence provider
- String extractRequestedProviderName = ProviderChecker.extractRequestedProviderName(persistenceUnit, integration);
- if ( ! ProviderChecker.isProvider( persistenceUnit, properties ) && !(this.getClass().getName().equals(extractRequestedProviderName))) {
- log.debug( "Excluding from consideration due to provider mis-match" );
- continue;
- }
- return getEntityManagerFactoryBuilder( persistenceUnit, integration, providedClassLoader );
- }
- log.debug( "Found no matching persistence units" );
- return null;
- }
- }
- protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilder(
- PersistenceUnitDescriptor persistenceUnitDescriptor, Map integration, ClassLoader providedClassLoader)
- tmp.addClasses("class1", "class2");
- protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map properties, ClassLoader providedClassLoader)
- String extractRequestedProviderName = ProviderChecker.extractRequestedProviderName(persistenceUnit, integration);
- if ( ! ProviderChecker.isProvider( persistenceUnit, properties ) && !(this.getClass().getName().equals(extractRequestedProviderName))) {
- log.debug( "Excluding from consideration due to provider mis-match" );
- continue;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement