Example usage for org.hibernate.tool.schema TargetType DATABASE

List of usage examples for org.hibernate.tool.schema TargetType DATABASE

Introduction

In this page you can find the example usage for org.hibernate.tool.schema TargetType DATABASE.

Prototype

TargetType DATABASE

To view the source code for org.hibernate.tool.schema TargetType DATABASE.

Click Source Link

Document

Export to the database.

Usage

From source file:com.abcanthur.website.codegenhack.JPADatabase.java

License:Apache License

@SuppressWarnings("serial")
@Override/*from  w  ww  .j a  va 2  s .com*/
protected DSLContext create0() {
    if (connection == null) {
        String packages = getProperties().getProperty("packages");

        if (isBlank(packages)) {
            packages = "";
            log.warn("No packages defined",
                    "It is highly recommended that you provide explicit packages to scan");
        }

        try {
            connection = DriverManager.getConnection("jdbc:h2:mem:jooq-meta-extensions", "sa", "");

            MetadataSources metadata = new MetadataSources(new StandardServiceRegistryBuilder()
                    .applySetting("hibernate.dialect", "org.hibernate.dialect.H2Dialect")
                    .applySetting("javax.persistence.schema-generation-connection", connection)

                    // [#5607] JPADatabase causes warnings - This prevents them
                    .applySetting(AvailableSettings.CONNECTION_PROVIDER,
                            "com.abcanthur.website.codegenhack.CustomConnectionProvider")
                    .build());

            ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
                    true);

            scanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));
            for (String pkg : packages.split(","))
                for (BeanDefinition def : scanner.findCandidateComponents(defaultIfBlank(pkg, "").trim()))
                    metadata.addAnnotatedClass(Class.forName(def.getBeanClassName()));

            // This seems to be the way to do this in idiomatic Hibernate 5.0 API
            // See also: http://stackoverflow.com/q/32178041/521799
            // SchemaExport export = new SchemaExport((MetadataImplementor) metadata.buildMetadata(), connection);
            // export.create(true, true);

            // Hibernate 5.2 broke 5.0 API again. Here's how to do this now:
            SchemaExport export = new SchemaExport();
            export.create(EnumSet.of(TargetType.DATABASE), metadata.buildMetadata());
        } catch (Exception e) {
            throw new DataAccessException("Error while exporting schema", e);
        }
    }

    return DSL.using(connection);
}

From source file:com.imos.sample.service.HibernateService.java

/**
 * Hibernate configuration.//from w  ww  .  j a v a2  s.  c om
 *
 * @throws RepositoryException
 */
public void config() throws RepositoryException {
    try {
        StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder();
        if (filePath == null || filePath.isEmpty()) {
            registryBuilder = registryBuilder.configure();
        } else {
            registryBuilder = registryBuilder.configure(filePath);
        }
        registry = registryBuilder.build();

        MetadataSources metaData = new MetadataSources(registry);
        sessionFactory = metaData.buildMetadata().buildSessionFactory();
        session = sessionFactory.openSession();

        SchemaExport schemaExport = new SchemaExport();
        schemaExport.setDelimiter(";");
        schemaExport.setFormat(true);
        schemaExport.setManageNamespaces(true);
        schemaExport.setOutputFile("./ddl_skilldb.sql");
        schemaExport.execute(EnumSet.of(TargetType.SCRIPT, TargetType.DATABASE, TargetType.STDOUT),
                SchemaExport.Action.CREATE, metaData.buildMetadata(registry), registry);

        log.info("Configuration succeed");
    } catch (HibernateException e) {
        StandardServiceRegistryBuilder.destroy(registry);
        log.error("Configuration failed : {}", e);
    }
}

From source file:com.yahoo.elide.datastores.hibernate5.HibernateEntityManagerDataStoreSupplier.java

License:Apache License

@Override
public DataStore get() {
    // Add additional checks to our static check mappings map.
    // NOTE: This is a bit hacky. We need to do a major overhaul on our test architecture
    TestCheckMappings.MAPPINGS.put("filterCheck", Filtered.FilterCheck.class);
    TestCheckMappings.MAPPINGS.put("filterCheck3", Filtered.FilterCheck3.class);

    Map<String, Object> options = new HashMap<>();
    ArrayList<Class> bindClasses = new ArrayList<>();

    try {/*www  .  j a va2  s  .  com*/
        bindClasses.addAll(ClassScanner.getAnnotatedClasses(Parent.class.getPackage(), Entity.class));
    } catch (MappingException e) {
        throw new IllegalStateException(e);
    }

    options.put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
    options.put("javax.persistence.jdbc.url",
            JDBC_PREFIX + System.getProperty(MYSQL_PORT_PROPERTY, MYSQL_PORT) + JDBC_SUFFIX);
    options.put("javax.persistence.jdbc.user", ROOT);
    options.put("javax.persistence.jdbc.password", ROOT);
    options.put(AvailableSettings.LOADED_CLASSES, bindClasses);

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("elide-tests", options);
    HibernateEntityManager em = (HibernateEntityManager) emf.createEntityManager();

    // method to force class initialization
    MetadataSources metadataSources = new MetadataSources(new StandardServiceRegistryBuilder()
            .configure("hibernate.cfg.xml").applySetting(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread")
            .applySetting(Environment.URL,
                    JDBC_PREFIX + System.getProperty(MYSQL_PORT_PROPERTY, MYSQL_PORT) + JDBC_SUFFIX)
            .applySetting(Environment.USER, ROOT).applySetting(Environment.PASS, ROOT).build());

    try {
        ClassScanner.getAnnotatedClasses(Parent.class.getPackage(), Entity.class)
                .forEach(metadataSources::addAnnotatedClass);
    } catch (MappingException e) {
        throw new IllegalStateException(e);
    }

    MetadataImplementor metadataImplementor = (MetadataImplementor) metadataSources.buildMetadata();

    EnumSet<TargetType> type = EnumSet.of(TargetType.DATABASE);
    // create example tables from beans
    SchemaExport schemaExport = new SchemaExport();
    schemaExport.drop(type, metadataImplementor);
    schemaExport.execute(type, SchemaExport.Action.CREATE, metadataImplementor);

    if (!schemaExport.getExceptions().isEmpty()) {
        throw new IllegalStateException(schemaExport.getExceptions().toString());
    }

    return new AbstractHibernateStore.Builder(em).withScrollEnabled(true)
            .withScrollMode(ScrollMode.FORWARD_ONLY).build();
}

From source file:org.glite.security.voms.admin.persistence.deployer.SchemaDeployer.java

License:Apache License

private void doUndeploy() {

    checkVoExistence();//from w  w  w  . j  a va 2s .co m

    log.info("Undeploying voms database...");

    int existingDB = checkDatabaseExistence();

    if (existingDB == 1) {
        log.error(
                "This tool cannot undeploy voms-admin 1.2.x database! Please upgrade to voms-admin 2 or use voms-admin-configure 1.2.x tools to undeploy this database.");
        System.exit(-1);
    }

    if (existingDB == 2) {

        log.error(
                "This tool cannot undeploy voms-admin 2.0.x databases! Please either upgrade the database to voms-admin 2.5 (using this tool) or use voms-admin-configure 2.0.x"
                        + " tools to undeploy this database");

        System.exit(-1);
    }
    if (existingDB < 0) {

        log.error("No voms-admin database found!");
        System.exit(-1);
    }

    checkDatabaseWritable();

    SchemaExport export = new SchemaExport();

    EnumSet<TargetType> targetTypes = EnumSet.of(TargetType.DATABASE);

    Metadata md = getHibernateMetadataSources().getMetadataBuilder().build();
    export.drop(targetTypes, md);

    @SuppressWarnings("rawtypes")
    List l = export.getExceptions();

    if (!l.isEmpty()) {
        log.error("Error undeploying voms database!");
        printExceptions(l);
        System.exit(2);
    }

    log.info("Database undeployed correctly!");

}

From source file:org.glite.security.voms.admin.persistence.deployer.SchemaDeployer.java

License:Apache License

private void doDeploy() {

    checkVoExistence();/*from   www . ja va  2s .  co  m*/

    int existingDb = checkDatabaseExistence();

    if (existingDb > 0) {
        final String adminDbVersion = VOMSVersionDAO.instance().getVersion().getAdminVersion().trim();

        log.warn("Existing voms database found. Will not overwrite " + "the database! (admin db version: {})",
                adminDbVersion);
        System.exit(0);
    }

    checkDatabaseWritable();

    SchemaExport exporter = new SchemaExport();

    EnumSet<TargetType> targetTypes = EnumSet.of(TargetType.DATABASE);
    exporter.createOnly(targetTypes, HibernateFactory.getMetadata());

    log.info("Deploying voms database...");

    @SuppressWarnings("rawtypes")
    List l = exporter.getExceptions();

    if (!l.isEmpty()) {
        log.error("Error deploying voms database!");
        printExceptions(l);
        System.exit(2);

    }

    // This is needed as the version of hibernate we are using
    // does not support defining indexes on join table columns
    // See: https://hibernate.atlassian.net/browse/HHH-4263
    CreateAuditEventDataIndexes createIndexTask = new CreateAuditEventDataIndexes(
            HibernateFactory.getSession());

    HibernateFactory.beginTransaction();

    createIndexTask.run();

    CreateAttributeValueIndex avIndexTask = new CreateAttributeValueIndex(HibernateFactory.getSession());

    avIndexTask.run();

    UpdateCATask caTask = new UpdateCATask();
    caTask.run();

    DatabaseSetupTask task = DatabaseSetupTask.instance();
    task.run();

    HibernateFactory.commitTransaction();
    log.info("Database deployed correctly!");

}

From source file:org.jooq.example.jpa.JPAExample.java

License:Apache License

@SuppressWarnings("serial")
public static void main(String[] args) throws Exception {
    Connection connection = null;
    EntityManagerFactory emf = null;//from w  w w  .  jav a  2  s  .  c o m
    EntityManager em = null;

    try {

        // Bootstrapping JDBC:
        Class.forName("org.h2.Driver");
        connection = DriverManager.getConnection("jdbc:h2:mem:jooq-jpa-example", "sa", "");
        final Connection c = connection;

        // Creating an in-memory H2 database from our entities
        MetadataSources metadata = new MetadataSources(new StandardServiceRegistryBuilder()
                .applySetting("hibernate.dialect", "org.hibernate.dialect.H2Dialect")
                .applySetting("javax.persistence.schema-generation-connection", connection)
                .applySetting("javax.persistence.create-database-schemas", true)

                // [#5607] JPADatabase causes warnings - This prevents
                // them
                .applySetting(AvailableSettings.CONNECTION_PROVIDER, new ConnectionProvider() {
                    @SuppressWarnings("rawtypes")
                    @Override
                    public boolean isUnwrappableAs(Class unwrapType) {
                        return false;
                    }

                    @Override
                    public <T> T unwrap(Class<T> unwrapType) {
                        return null;
                    }

                    @Override
                    public Connection getConnection() {
                        return c;
                    }

                    @Override
                    public void closeConnection(Connection conn) throws SQLException {
                    }

                    @Override
                    public boolean supportsAggressiveRelease() {
                        return true;
                    }
                }).build());

        metadata.addAnnotatedClass(Actor.class);
        metadata.addAnnotatedClass(Film.class);
        metadata.addAnnotatedClass(Language.class);

        SchemaExport export = new SchemaExport();
        export.create(EnumSet.of(TargetType.DATABASE), metadata.buildMetadata());

        // Setting up an EntityManager using Spring (much easier than out-of-the-box Hibernate)
        LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean();
        HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
        adapter.setDatabasePlatform(SQLDialect.H2.thirdParty().hibernateDialect());
        bean.setDataSource(new SingleConnectionDataSource(connection, true));
        bean.setPackagesToScan("org.jooq.example.jpa.entity");
        bean.setJpaVendorAdapter(adapter);
        bean.setPersistenceUnitName("test");
        bean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
        bean.afterPropertiesSet();

        emf = bean.getObject();
        em = emf.createEntityManager();

        final EntityManager e = em;

        // Run some Hibernate / jOOQ logic inside of a transaction
        em.getTransaction().begin();
        run(em, DSL.using(new DefaultConfiguration().set(connection).set(new DefaultExecuteListener() {
            @Override
            public void start(ExecuteContext ctx) {
                // Flush all changes from the EntityManager to the database for them to be visible in jOOQ
                e.flush();
                super.start(ctx);
            }
        })));
        em.getTransaction().commit();
    } finally {
        if (em != null)
            em.close();

        if (emf != null)
            emf.close();

        if (connection != null)
            connection.close();
    }
}

From source file:org.jooq.example.jpa.Setup.java

License:Apache License

static void run(BiConsumer<EntityManager, DSLContext> consumer) throws Exception {
    Connection connection = null;
    EntityManagerFactory emf = null;//w  ww  .  ja  v  a2s  . c o m
    EntityManager em = null;

    try {

        // Bootstrapping JDBC:
        Class.forName("org.h2.Driver");
        connection = new LoggingConnection(
                DriverManager.getConnection("jdbc:h2:mem:jooq-jpa-example", "sa", ""));
        final Connection c = connection;

        // Creating an in-memory H2 database from our entities
        MetadataSources metadata = new MetadataSources(new StandardServiceRegistryBuilder()
                .applySetting("hibernate.dialect", "org.hibernate.dialect.H2Dialect")
                .applySetting("javax.persistence.schema-generation-connection", connection)
                .applySetting("javax.persistence.create-database-schemas", true)

                // [#5607] JPADatabase causes warnings - This prevents
                // them
                .applySetting(AvailableSettings.CONNECTION_PROVIDER, new ConnectionProvider() {
                    @SuppressWarnings("rawtypes")
                    @Override
                    public boolean isUnwrappableAs(Class unwrapType) {
                        return false;
                    }

                    @Override
                    public <T> T unwrap(Class<T> unwrapType) {
                        return null;
                    }

                    @Override
                    public Connection getConnection() {
                        return c;
                    }

                    @Override
                    public void closeConnection(Connection conn) throws SQLException {
                    }

                    @Override
                    public boolean supportsAggressiveRelease() {
                        return true;
                    }
                }).build());

        metadata.addAnnotatedClass(Actor.class);
        metadata.addAnnotatedClass(Film.class);
        metadata.addAnnotatedClass(Language.class);

        SchemaExport export = new SchemaExport();
        export.create(EnumSet.of(TargetType.DATABASE), metadata.buildMetadata());

        // Setting up an EntityManager using Spring (much easier than out-of-the-box Hibernate)
        LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean();
        HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
        adapter.setDatabasePlatform(SQLDialect.H2.thirdParty().hibernateDialect());
        bean.setDataSource(new SingleConnectionDataSource(connection, true));
        bean.setPackagesToScan("org.jooq.example.jpa.entity");
        bean.setJpaVendorAdapter(adapter);
        bean.setPersistenceUnitName("test");
        bean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
        bean.afterPropertiesSet();

        emf = bean.getObject();
        em = emf.createEntityManager();

        final EntityManager e = em;

        // Run some Hibernate / jOOQ logic inside of a transaction
        em.getTransaction().begin();
        data(em);

        consumer.accept(em,
                DSL.using(new DefaultConfiguration().set(connection).set(new DefaultExecuteListener() {
                    @Override
                    public void start(ExecuteContext ctx) {
                        // Flush all changes from the EntityManager to the database for them to be visible in jOOQ
                        e.flush();
                        super.start(ctx);
                    }
                })));
        em.getTransaction().commit();
    } finally {
        if (em != null)
            em.close();

        if (emf != null)
            emf.close();

        if (connection != null)
            connection.close();
    }
}

From source file:org.jooq.meta.extensions.jpa.JPADatabase.java

License:Apache License

@Override
protected DSLContext create0() {
    if (connection == null) {
        String packages = getProperties().getProperty("packages");

        if (isBlank(packages)) {
            packages = "";
            log.warn("No packages defined",
                    "It is highly recommended that you provide explicit packages to scan");
        }/*from   w  w w. j a  v a2s  .c  o m*/

        // [#9058] Properties use camelCase notation.
        boolean useAttributeConverters = Boolean.valueOf(getProperties().getProperty("useAttributeConverters",
                getProperties().getProperty("use-attribute-converters", "true")));
        String unqualifiedSchema = getProperties().getProperty("unqualifiedSchema", "none").toLowerCase();
        publicIsDefault = "none".equals(unqualifiedSchema);

        try {
            Properties info = new Properties();
            info.put("user", "sa");
            info.put("password", "");
            connection = new org.h2.Driver().connect("jdbc:h2:mem:jooq-meta-extensions-" + UUID.randomUUID(),
                    info);

            // [#6709] Apply default settings first, then allow custom overrides
            Map<String, Object> settings = new LinkedHashMap<>();
            settings.put("hibernate.dialect", HIBERNATE_DIALECT);
            settings.put("javax.persistence.schema-generation-connection", connection);
            settings.put("javax.persistence.create-database-schemas", true);

            // [#5607] JPADatabase causes warnings - This prevents them
            settings.put(AvailableSettings.CONNECTION_PROVIDER, connectionProvider());

            for (Entry<Object, Object> entry : getProperties().entrySet()) {
                String key = "" + entry.getKey();

                if (key.startsWith("hibernate.") || key.startsWith("javax.persistence."))
                    userSettings.put(key, entry.getValue());
            }
            settings.putAll(userSettings);

            StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
            builder.applySettings(settings);

            MetadataSources metadata = new MetadataSources(builder.applySettings(settings).build());

            ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
                    true);

            scanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));

            // [#5845] Use the correct ClassLoader to load the jpa entity classes defined in the user project
            ClassLoader cl = Thread.currentThread().getContextClassLoader();

            for (String pkg : packages.split(","))
                for (BeanDefinition def : scanner.findCandidateComponents(defaultIfBlank(pkg, "").trim()))
                    metadata.addAnnotatedClass(Class.forName(def.getBeanClassName(), true, cl));

            // This seems to be the way to do this in idiomatic Hibernate 5.0 API
            // See also: http://stackoverflow.com/q/32178041/521799
            // SchemaExport export = new SchemaExport((MetadataImplementor) metadata.buildMetadata(), connection);
            // export.create(true, true);

            // Hibernate 5.2 broke 5.0 API again. Here's how to do this now:
            SchemaExport export = new SchemaExport();
            export.create(EnumSet.of(TargetType.DATABASE), metadata.buildMetadata());

            if (useAttributeConverters)
                loadAttributeConverters(metadata.getAnnotatedClasses());
        } catch (Exception e) {
            throw new DataAccessException("Error while exporting schema", e);
        }
    }

    return DSL.using(connection);
}