Example usage for org.hibernate.boot MetadataBuilder build

List of usage examples for org.hibernate.boot MetadataBuilder build

Introduction

In this page you can find the example usage for org.hibernate.boot MetadataBuilder build.

Prototype

public Metadata build();

Source Link

Document

Actually build the metamodel

Usage

From source file:com.fitbur.testify.fixture.common.SessionFactoryFactoryBean.java

License:Apache License

@Override
public SessionFactory getObject() throws Exception {
    StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
            .loadProperties("hibernate.properties").applySetting(Environment.DATASOURCE, dataSource).build();

    Reflections reflections = new Reflections(DatabaseConfig.class.getPackage().getName());
    MetadataSources metadataSources = new MetadataSources(registry);

    MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder()
            .applyPhysicalNamingStrategy(new PhysicalNamingStrategyStandardImpl())
            .applyImplicitNamingStrategy(new ImplicitNamingStrategyComponentPathImpl());

    reflections.getSubTypesOf(AttributeConverter.class).parallelStream()
            .forEach(metadataBuilder::applyAttributeConverter);

    reflections.getTypesAnnotatedWith(Entity.class).parallelStream()
            .forEach(metadataSources::addAnnotatedClass);

    Metadata metadata = metadataBuilder.build();

    return metadata.buildSessionFactory();
}

From source file:com.fitbur.testify.fixture.PostgresDockerConfig.java

License:Apache License

@Bean
FactoryBean<SessionFactory> sessionFactoryImplProvider(DataSource dataSource) {
    return new SmartFactoryBean<SessionFactory>() {
        @Override/*w  ww .j  a v  a2s  . co m*/
        public boolean isPrototype() {
            return false;
        }

        @Override
        public boolean isEagerInit() {
            return true;
        }

        @Override
        public SessionFactory getObject() throws Exception {
            StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
                    .loadProperties("hibernate.properties").applySetting(Environment.DATASOURCE, dataSource)
                    .build();

            Reflections reflections = new Reflections(PostgresDockerConfig.class.getPackage().getName());
            MetadataSources metadataSources = new MetadataSources(registry);

            MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder()
                    .applyPhysicalNamingStrategy(new PhysicalNamingStrategyStandardImpl())
                    .applyImplicitNamingStrategy(new ImplicitNamingStrategyComponentPathImpl());

            reflections.getSubTypesOf(AttributeConverter.class).parallelStream()
                    .forEach(metadataBuilder::applyAttributeConverter);

            reflections.getTypesAnnotatedWith(Entity.class).parallelStream()
                    .forEach(metadataSources::addAnnotatedClass);

            Metadata metadata = metadataBuilder.build();

            return metadata.buildSessionFactory();
        }

        @Override
        public Class<?> getObjectType() {
            return SessionFactory.class;
        }

        @Override
        public boolean isSingleton() {
            return true;
        }
    };

}

From source file:com.foilen.smalltools.tools.Hibernate50Tools.java

License:Open Source License

/**
 * Generate the SQL file. This is based on the code in {@link LocalSessionFactoryBuilder#scanPackages(String...)}
 *
 * @param dialect/*w w  w . j a v  a  2s  . c o  m*/
 *            the dialect (e.g: org.hibernate.dialect.MySQL5InnoDBDialect )
 * @param outputSqlFile
 *            where to put the generated SQL file
 * @param useUnderscore
 *            true: to have tables names like "employe_manager" ; false: to have tables names like "employeManager"
 * @param packagesToScan
 *            the packages where your entities are
 */
public static void generateSqlSchema(Class<? extends Dialect> dialect, String outputSqlFile,
        boolean useUnderscore, String... packagesToScan) {

    BootstrapServiceRegistry bootstrapServiceRegistry = new BootstrapServiceRegistryBuilder().build();

    MetadataSources metadataSources = new MetadataSources(bootstrapServiceRegistry);

    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);
    scanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));
    scanner.addIncludeFilter(new AnnotationTypeFilter(Embeddable.class));
    scanner.addIncludeFilter(new AnnotationTypeFilter(MappedSuperclass.class));
    for (String pkg : packagesToScan) {
        for (BeanDefinition beanDefinition : scanner.findCandidateComponents(pkg)) {
            metadataSources.addAnnotatedClassName(beanDefinition.getBeanClassName());
        }
    }

    StandardServiceRegistryBuilder standardServiceRegistryBuilder = new StandardServiceRegistryBuilder(
            bootstrapServiceRegistry);
    standardServiceRegistryBuilder.applySetting(AvailableSettings.DIALECT, dialect.getName());
    StandardServiceRegistryImpl ssr = (StandardServiceRegistryImpl) standardServiceRegistryBuilder.build();
    MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder(ssr);

    if (useUnderscore) {
        metadataBuilder.applyImplicitNamingStrategy(new SpringImplicitNamingStrategy());
        metadataBuilder.applyPhysicalNamingStrategy(new SpringPhysicalNamingStrategy());
    }

    MetadataImpl metadata = (MetadataImpl) metadataBuilder.build();

    // Exportation
    SchemaExport schemaExport = new SchemaExport(metadata);
    schemaExport.setOutputFile(outputSqlFile);
    schemaExport.setDelimiter(";");
    schemaExport.setFormat(true);
    schemaExport.execute(true, false, false, true);
}

From source file:com.foilen.smalltools.tools.Hibernate51Tools.java

License:Open Source License

/**
 * Generate the SQL file. This is based on the code in {@link LocalSessionFactoryBuilder#scanPackages(String...)}
 *
 * @param dialect//www .j  a  v  a2 s  . co  m
 *            the dialect (e.g: org.hibernate.dialect.MySQL5InnoDBDialect )
 * @param outputSqlFile
 *            where to put the generated SQL file
 * @param useUnderscore
 *            true: to have tables names like "employe_manager" ; false: to have tables names like "employeManager"
 * @param packagesToScan
 *            the packages where your entities are
 */
public static void generateSqlSchema(Class<? extends Dialect> dialect, String outputSqlFile,
        boolean useUnderscore, String... packagesToScan) {

    BootstrapServiceRegistry bootstrapServiceRegistry = new BootstrapServiceRegistryBuilder().build();

    MetadataSources metadataSources = new MetadataSources(bootstrapServiceRegistry);

    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);
    scanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));
    scanner.addIncludeFilter(new AnnotationTypeFilter(Embeddable.class));
    scanner.addIncludeFilter(new AnnotationTypeFilter(MappedSuperclass.class));
    for (String pkg : packagesToScan) {
        for (BeanDefinition beanDefinition : scanner.findCandidateComponents(pkg)) {
            metadataSources.addAnnotatedClassName(beanDefinition.getBeanClassName());
        }
    }

    StandardServiceRegistryBuilder standardServiceRegistryBuilder = new StandardServiceRegistryBuilder(
            bootstrapServiceRegistry);
    standardServiceRegistryBuilder.applySetting(AvailableSettings.DIALECT, dialect.getName());
    StandardServiceRegistryImpl ssr = (StandardServiceRegistryImpl) standardServiceRegistryBuilder.build();
    MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder(ssr);

    if (useUnderscore) {
        metadataBuilder.applyImplicitNamingStrategy(new SpringImplicitNamingStrategy());
        metadataBuilder.applyPhysicalNamingStrategy(new SpringPhysicalNamingStrategy());
    }

    new SchemaExport() //
            .setHaltOnError(true) //
            .setOutputFile(outputSqlFile) //
            .setFormat(true) //
            .setDelimiter(";") //
            .execute(EnumSet.of(TargetType.SCRIPT), SchemaExport.Action.CREATE, metadataBuilder.build());

}

From source file:com.zeroone.guestebook.domain.SchemaGenerator.java

License:Apache License

public SchemaGenerator(String packageName, Dialect dialect) throws Exception {
    BootstrapServiceRegistry bsr;// w  w w  .  j a  va2s  . c  o m
    bsr = new BootstrapServiceRegistryBuilder().build();
    StandardServiceRegistryBuilder ssrBuilder;
    ssrBuilder = new StandardServiceRegistryBuilder(bsr);
    ssrBuilder.applySetting("hibernate.dialect", dialect.dialectClass);
    ServiceRegistry serviceRegistry = ssrBuilder.build();
    MetadataSources metadataSources = new MetadataSources(serviceRegistry);
    for (Class<?> clazz : getClasses(packageName)) {
        metadataSources.addAnnotatedClass(clazz);
    }
    MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder();
    this.metadata = (MetadataImplementor) metadataBuilder.build();
    this.dialect = dialect;
}

From source file:org.openflexo.connie.hbn.HbnConfig.java

License:Open Source License

public Metadata getMetadata() {

    if (metadata == null) {

        MetadataBuilder builder = getBuilder();

        metadata = builder.build();
    } else {/* ww w .  j  a  v a  2  s .co m*/
        LOGGER.warning("Metadata has already been generated");
    }

    return metadata;
}

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()));
        }//  w  ww  . j  a  v  a  2 s .  c om
    }

    final StandardServiceRegistryImpl registryImpl = (StandardServiceRegistryImpl) registryBuilder.build();
    final MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder(registryImpl);

    new SchemaExport().setHaltOnError(true).setDelimiter(";").create(EnumSet.of(TargetType.STDOUT),
            metadataBuilder.build());
}