Example usage for org.hibernate.boot.registry StandardServiceRegistryBuilder getBootstrapServiceRegistry

List of usage examples for org.hibernate.boot.registry StandardServiceRegistryBuilder getBootstrapServiceRegistry

Introduction

In this page you can find the example usage for org.hibernate.boot.registry StandardServiceRegistryBuilder getBootstrapServiceRegistry.

Prototype

@SuppressWarnings("unused")
    public BootstrapServiceRegistry getBootstrapServiceRegistry() 

Source Link

Usage

From source file:com.blazebit.persistence.integration.hibernate.Hibernate43Integrator.java

License:Apache License

@Override
public void prepareServices(final StandardServiceRegistryBuilder serviceRegistryBuilder) {
    final StrategySelector strategySelector = serviceRegistryBuilder.getBootstrapServiceRegistry()
            .getService(StrategySelector.class);
    serviceRegistryBuilder.addService(StrategySelector.class, new StrategySelector() {
        @Override//from  w ww.  j a va2  s  .c  om
        public <T> void registerStrategyImplementor(Class<T> aClass, String s, Class<? extends T> aClass1) {
            strategySelector.registerStrategyImplementor(aClass, s, aClass1);
        }

        @Override
        public <T> void unRegisterStrategyImplementor(Class<T> aClass, Class<? extends T> aClass1) {
            strategySelector.unRegisterStrategyImplementor(aClass, aClass1);
        }

        @Override
        public <T> Class<? extends T> selectStrategyImplementor(Class<T> aClass, String s) {
            return strategySelector.selectStrategyImplementor(aClass, s);
        }

        @Override
        public <T> T resolveStrategy(Class<T> aClass, Object o) {
            if (MultiTableBulkIdStrategy.class == aClass) {
                if (o == null) {
                    ServiceRegistry serviceRegistry = SERVICE_REGISTRY_ACCESS.get();
                    SERVICE_REGISTRY_ACCESS.remove();
                    return (T) new CustomMultiTableBulkIdStrategy(serviceRegistry.getService(JdbcServices.class)
                            .getDialect().supportsTemporaryTables() ? TemporaryTableBulkIdStrategy.INSTANCE
                                    : new PersistentTableBulkIdStrategy());
                } else {
                    LOG.warning(
                            "Can't replace hibernate.hql.bulk_id_strategy because it was overridden by the user with: "
                                    + o);
                }
            }
            return strategySelector.resolveStrategy(aClass, o);
        }

        @Override
        public <T> T resolveDefaultableStrategy(Class<T> aClass, Object o, T t) {
            return strategySelector.resolveDefaultableStrategy(aClass, o, t);
        }
    });
    serviceRegistryBuilder.addInitiator(new StandardServiceInitiator<Database>() {
        @Override
        public Database initiateService(@SuppressWarnings("rawtypes") Map configurationValues,
                ServiceRegistryImplementor registry) {
            return null;
        }

        @Override
        public Class<Database> getServiceInitiated() {
            return Database.class;
        }
    });
}