List of usage examples for org.hibernate.boot.registry StandardServiceRegistryBuilder StandardServiceRegistryBuilder
public StandardServiceRegistryBuilder(BootstrapServiceRegistry bootstrapServiceRegistry)
From source file:org.teiid.spring.autoconfigure.SchemaBuilderUtility.java
License:Apache License
public static Metadata generateHbmModel(ConnectionProvider provider, Dialect dialect) throws SQLException { MetadataSources metadataSources = new MetadataSources(); ServiceRegistry registry = metadataSources.getServiceRegistry(); StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder( (BootstrapServiceRegistry) registry).applySetting(AvailableSettings.DIALECT, TeiidDialect.class) .addService(ConnectionProvider.class, provider).addService(JdbcEnvironment.class, new JdbcEnvironmentImpl(provider.getConnection().getMetaData(), dialect)) .build();//w w w . ja va 2 s.c o m ReverseEngineeringStrategy strategy = new DefaultReverseEngineeringStrategy(); MetadataBuildingOptions options = new MetadataBuildingOptionsImpl(serviceRegistry); BasicTypeRegistry basicTypeRegistry = new BasicTypeRegistry(); TypeResolver typeResolver = new TypeResolver(basicTypeRegistry, new TypeFactory()); InFlightMetadataCollectorImpl metadataCollector = new InFlightMetadataCollectorImpl(options, typeResolver); MetadataBuildingContext buildingContext = new MetadataBuildingContextRootImpl(options, null, metadataCollector); JDBCBinder binder = new JDBCBinder(serviceRegistry, new Properties(), buildingContext, strategy, false); Metadata metadata = metadataCollector.buildMetadataInstance(buildingContext); binder.readFromDatabase(null, null, buildMapping(metadata)); HibernateMappingExporter exporter = new HibernateMappingExporter() { @Override protected Metadata getMetadata() { return metadata; } }; exporter.start(); return metadata; }
From source file:org.teiid.spring.autoconfigure.TeiidServer.java
License:Apache License
private Metadata getMetadata(Set<BeanDefinition> components, PhysicalNamingStrategy namingStrategy, MetadataFactory mf) {//from w w w . ja va2s. c o m ServiceRegistry registry = metadataSources.getServiceRegistry(); StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder( (BootstrapServiceRegistry) registry).applySetting(AvailableSettings.DIALECT, TeiidDialect.class) .build(); // Generate Hibernate model based on @Entity definitions for (BeanDefinition c : components) { try { Class<?> clazz = Class.forName(c.getBeanClassName()); metadataSources.addAnnotatedClass(clazz); } catch (ClassNotFoundException e) { } } return metadataSources.getMetadataBuilder(serviceRegistry).applyPhysicalNamingStrategy(namingStrategy) .build(); }
From source file:org.wallride.tools.Hbm2ddl.java
License:Apache License
public static void main(String[] args) throws Exception { String locationPattern = "classpath:/org/wallride/domain/*"; final BootstrapServiceRegistry registry = new BootstrapServiceRegistryBuilder().build(); final MetadataSources metadataSources = new MetadataSources(registry); final StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder(registry); registryBuilder.applySetting(AvailableSettings.DIALECT, ExtendedMySQL5InnoDBDialect.class.getCanonicalName()); registryBuilder.applySetting(AvailableSettings.GLOBALLY_QUOTED_IDENTIFIERS, true); registryBuilder.applySetting(AvailableSettings.PHYSICAL_NAMING_STRATEGY, PhysicalNamingStrategySnakeCaseImpl.class); final PathMatchingResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); final Resource[] resources = resourcePatternResolver.getResources(locationPattern); final SimpleMetadataReaderFactory metadataReaderFactory = new SimpleMetadataReaderFactory(); for (Resource resource : resources) { MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource); AnnotationMetadata metadata = metadataReader.getAnnotationMetadata(); if (metadata.hasAnnotation(Entity.class.getName())) { metadataSources.addAnnotatedClass(Class.forName(metadata.getClassName())); }//from w w w . j ava 2 s .co m } final StandardServiceRegistryImpl registryImpl = (StandardServiceRegistryImpl) registryBuilder.build(); final MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder(registryImpl); new SchemaExport().setHaltOnError(true).setDelimiter(";").create(EnumSet.of(TargetType.STDOUT), metadataBuilder.build()); }
From source file:to.etc.domui.hibernate.config.HibernateConfigurator.java
License:Open Source License
/** * Main worker to initialize the database layer, using Hibernate, with a user-specified core data source. This * code also enables SQL logging when .developer.properties option hibernate.sql=true. *//*from w w w. j a v a 2s. c o m*/ public synchronized static void initialize(final DataSource ds) throws Exception { System.setProperty("org.jboss.logging.provider", "slf4j"); // Thanks to https://stackoverflow.com/questions/11639997/how-do-you-configure-logging-in-hibernate-4-to-use-slf4j if (m_sessionFactory != null) throw new IllegalStateException("HibernateConfigurator has already been initialized!"); if (m_annotatedClassList.size() == 0) throw new IllegalStateException( "Please call addClasses(Class<?>...) and register your Hibernate data classes before calling me."); long ts = System.nanoTime(); m_dataSource = ds; // see https://www.boraji.com/hibernate-5-event-listener-example //-- Create Hibernate's config. See https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/chapters/bootstrap/Bootstrap.html /* * Hibernate apparently cannot initialize without the useless hibernate.cfg.xml file. We cannot * add that file at the root location because that would interfere with applications. To have a * working model we add it as a resource in this class's package. And of course Hibernate makes * it hard to reach- we need to calculate the proper name, sigh. */ BootstrapServiceRegistry bootstrapRegistry = new BootstrapServiceRegistryBuilder() .applyIntegrator(new JpaIntegrator()).build(); String resname = "/" + HibernateConfigurator.class.getPackage().getName().replace('.', '/') + "/hibernate.cfg.xml"; StandardServiceRegistryBuilder serviceBuilder = new StandardServiceRegistryBuilder(bootstrapRegistry) .configure(resname); /* * Set other properties according to config settings made. */ serviceBuilder.applySetting("hibernate.connection.datasource", ds); boolean logsql; if (m_showSQL == null) logsql = DeveloperOptions.getBool("hibernate.sql", false); // Take default from .developer.properties else logsql = m_showSQL.booleanValue(); if (logsql) { serviceBuilder.applySetting("show_sql", "true"); serviceBuilder.applySetting("hibernate.show_sql", "true"); } /* * Hibernate defaults to completely non-standard behavior for sequences, using the * "hilo" sequence generator by default. This irresponsible behavior means that * by default Hibernate code is incompatible with any code using sequences. * Since that is irresponsible and downright DUMB this reverts the behavior to * using sequences in their normal behavior. * See https://stackoverflow.com/questions/12745751/hibernate-sequencegenerator-and-allocationsize */ serviceBuilder.applySetting("hibernate.id.new_generator_mappings", "true"); // MUST BE BEFORE config.configure m_hibernateOptions.forEach((option, value) -> serviceBuilder.applySetting(option, value)); if (DeveloperOptions.getBool("hibernate.format_sql", true)) { serviceBuilder.applySetting("hibernate.format_sql", "true"); } switch (m_mode) { default: throw new IllegalStateException("Mode: " + m_mode); case CREATE: serviceBuilder.applySetting("hbm2ddl.auto", "create"); serviceBuilder.applySetting("hibernate.hbm2ddl.auto", "create"); break; case NONE: serviceBuilder.applySetting("hbm2ddl.auto", "none"); serviceBuilder.applySetting("hibernate.hbm2ddl.auto", "none"); break; case UPDATE: serviceBuilder.applySetting("hbm2ddl.auto", "update"); serviceBuilder.applySetting("hibernate.hbm2ddl.auto", "update"); break; } // change settings for (IHibernateConfigListener listener : m_onConfigureList) { listener.onSettings(serviceBuilder); } ServiceRegistry reg = serviceBuilder.build(); MetadataSources sources = new MetadataSources(reg); for (Class<?> clz : m_annotatedClassList) sources.addAnnotatedClass(clz); // add classes for (IHibernateConfigListener listener : m_onConfigureList) { listener.onAddSources(sources); } Metadata metaData = sources.getMetadataBuilder() .applyImplicitNamingStrategy(ImplicitNamingStrategyJpaCompliantImpl.INSTANCE).build(); enhanceMappings(metaData); //for(Consumer<Configuration> listener : m_onConfigureList) { // listener.accept(config); //} //-- Create the session factory: this completes the Hibernate config part. SessionFactoryBuilder sessionFactoryBuilder = metaData.getSessionFactoryBuilder(); // sessionFactoryBuilder.applyInterceptor( new CustomSessionFactoryInterceptor() ); //sessionFactoryBuilder.addSessionFactoryObservers( new CustomSessionFactoryObserver() ); // Apply a CDI BeanManager ( for JPA event listeners ) //sessionFactoryBuilder.applyBeanManager( getBeanManager() ); SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) sessionFactoryBuilder.build(); m_sessionFactory = sessionFactory; EventListenerRegistry listenerRegistry = sessionFactory.getServiceRegistry() .getService(EventListenerRegistry.class); if (m_beforeImagesEnabled) { // https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/chapters/events/Events.html listenerRegistry.prependListeners(EventType.POST_LOAD, new CreateBeforeImagePostLoadListener()); listenerRegistry.prependListeners(EventType.INIT_COLLECTION, new CopyCollectionEventListener()); } for (IHibernateConfigListener listener : m_onConfigureList) { listener.onAddListeners(listenerRegistry); } //-- Start DomUI/WebApp.core initialization: generalized database layer HibernateSessionMaker hsm; if (m_beforeImagesEnabled) { //-- We need the copy interceptor to handle these. hsm = dc -> { return m_sessionFactory.withOptions().interceptor(new BeforeImageInterceptor(dc.getBeforeCache())) .openSession(); //return m_sessionFactory.openSession(new BeforeImageInterceptor(dc.getBeforeCache())); }; } else { hsm = dc -> m_sessionFactory.openSession(); } //-- If no handlers are registered: register the default ones. if (m_handlers.size() == 0) { m_handlers.register(JdbcQueryExecutor.FACTORY); m_handlers.register(HibernateQueryExecutor.FACTORY); } m_contextSource = new HibernateLongSessionContextFactory(m_listeners, hsm, m_handlers); System.out.println("domui: Hibernate initialization took a whopping " + StringTool.strNanoTime(System.nanoTime() - ts)); }