Java 类org.hibernate.tool.hbm2ddl.DatabaseMetadata 实例源码

项目:lams    文件:LocalSessionFactoryBean.java   
/**
 * Execute schema update script, determined by the Configuration object
 * used for creating the SessionFactory. A replacement for Hibernate's
 * SchemaUpdate class, for automatically executing schema update scripts
 * on application startup. Can also be invoked manually.
 * <p>Fetch the LocalSessionFactoryBean itself rather than the exposed
 * SessionFactory to be able to invoke this method, e.g. via
 * {@code LocalSessionFactoryBean lsfb = (LocalSessionFactoryBean) ctx.getBean("&mySessionFactory");}.
 * <p>Uses the SessionFactory that this bean generates for accessing a
 * JDBC connection to perform the script.
 * @throws DataAccessException in case of script execution errors
 * @see #setSchemaUpdate
 * @see org.hibernate.cfg.Configuration#generateSchemaUpdateScript
 * @see org.hibernate.tool.hbm2ddl.SchemaUpdate
 */
public void updateDatabaseSchema() throws DataAccessException {
    logger.info("Updating database schema for Hibernate SessionFactory");
    DataSource dataSource = getDataSource();
    if (dataSource != null) {
        // Make given DataSource available for the schema update.
        configTimeDataSourceHolder.set(dataSource);
    }
    try {
        SessionFactory sessionFactory = getSessionFactory();
        final Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
        HibernateTemplate hibernateTemplate = new HibernateTemplate(sessionFactory);
        hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
        hibernateTemplate.execute(
            new HibernateCallback<Object>() {
                @Override
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    @SuppressWarnings("deprecation")
                    Connection con = session.connection();
                    DatabaseMetadata metadata = new DatabaseMetadata(con, dialect);
                    String[] sql = getConfiguration().generateSchemaUpdateScript(dialect, metadata);
                    executeSchemaScript(con, sql);
                    return null;
                }
            }
        );
    }
    finally {
        if (dataSource != null) {
            configTimeDataSourceHolder.remove();
        }
    }
}
项目:lams    文件:LocalSessionFactoryBean.java   
/**
 * Execute schema creation script, determined by the Configuration object
 * used for creating the SessionFactory. A replacement for Hibernate's
 * SchemaValidator class, to be invoked after application startup.
 * <p>Fetch the LocalSessionFactoryBean itself rather than the exposed
 * SessionFactory to be able to invoke this method, e.g. via
 * {@code LocalSessionFactoryBean lsfb = (LocalSessionFactoryBean) ctx.getBean("&mySessionFactory");}.
 * <p>Uses the SessionFactory that this bean generates for accessing a
 * JDBC connection to perform the script.
 * @throws DataAccessException in case of script execution errors
 * @see org.hibernate.cfg.Configuration#validateSchema
 * @see org.hibernate.tool.hbm2ddl.SchemaValidator
 */
public void validateDatabaseSchema() throws DataAccessException {
    logger.info("Validating database schema for Hibernate SessionFactory");
    DataSource dataSource = getDataSource();
    if (dataSource != null) {
        // Make given DataSource available for the schema update.
        configTimeDataSourceHolder.set(dataSource);
    }
    try {
        SessionFactory sessionFactory = getSessionFactory();
        final Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
        HibernateTemplate hibernateTemplate = new HibernateTemplate(sessionFactory);
        hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
        hibernateTemplate.execute(
            new HibernateCallback<Object>() {
                @Override
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    @SuppressWarnings("deprecation")
                    Connection con = session.connection();
                    DatabaseMetadata metadata = new DatabaseMetadata(con, dialect, false);
                    getConfiguration().validateSchema(dialect, metadata);
                    return null;
                }
            }
        );
    }
    finally {
        if (dataSource != null) {
            configTimeDataSourceHolder.remove();
        }
    }
}
项目:lams    文件:Configuration.java   
public void validateSchema(Dialect dialect, DatabaseMetadata databaseMetadata)throws HibernateException {
    secondPassCompile();

    String defaultCatalog = properties.getProperty( Environment.DEFAULT_CATALOG );
    String defaultSchema = properties.getProperty( Environment.DEFAULT_SCHEMA );

    Iterator iter = getTableMappings();
    while ( iter.hasNext() ) {
        Table table = (Table) iter.next();
        if ( table.isPhysicalTable() ) {


            TableMetadata tableInfo = databaseMetadata.getTableMetadata(
                    table.getName(),
                    ( table.getSchema() == null ) ? defaultSchema : table.getSchema(),
                    ( table.getCatalog() == null ) ? defaultCatalog : table.getCatalog(),
                            table.isQuoted());
            if ( tableInfo == null ) {
                throw new HibernateException( "Missing table: " + table.getName() );
            }
            else {
                table.validateColumns( dialect, mapping, tableInfo );
            }

        }
    }

    iter = iterateGenerators( dialect );
    while ( iter.hasNext() ) {
        PersistentIdentifierGenerator generator = (PersistentIdentifierGenerator) iter.next();
        Object key = generator.generatorKey();
        if (key instanceof String) {
            key = normalizer.normalizeIdentifierQuoting( (String) key );
        }
        if ( !databaseMetadata.isSequence( key ) && !databaseMetadata.isTable( key ) ) {
            throw new HibernateException( "Missing sequence or table: " + key );
        }
    }
}
项目:spring4-understanding    文件:LocalSessionFactoryBean.java   
/**
 * Execute schema update script, determined by the Configuration object
 * used for creating the SessionFactory. A replacement for Hibernate's
 * SchemaUpdate class, for automatically executing schema update scripts
 * on application startup. Can also be invoked manually.
 * <p>Fetch the LocalSessionFactoryBean itself rather than the exposed
 * SessionFactory to be able to invoke this method, e.g. via
 * {@code LocalSessionFactoryBean lsfb = (LocalSessionFactoryBean) ctx.getBean("&mySessionFactory");}.
 * <p>Uses the SessionFactory that this bean generates for accessing a
 * JDBC connection to perform the script.
 * @throws DataAccessException in case of script execution errors
 * @see #setSchemaUpdate
 * @see org.hibernate.cfg.Configuration#generateSchemaUpdateScript
 * @see org.hibernate.tool.hbm2ddl.SchemaUpdate
 */
public void updateDatabaseSchema() throws DataAccessException {
    logger.info("Updating database schema for Hibernate SessionFactory");
    DataSource dataSource = getDataSource();
    if (dataSource != null) {
        // Make given DataSource available for the schema update.
        configTimeDataSourceHolder.set(dataSource);
    }
    try {
        SessionFactory sessionFactory = getSessionFactory();
        final Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
        HibernateTemplate hibernateTemplate = new HibernateTemplate(sessionFactory);
        hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
        hibernateTemplate.execute(
            new HibernateCallback<Object>() {
                @Override
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    @SuppressWarnings("deprecation")
                    Connection con = session.connection();
                    DatabaseMetadata metadata = new DatabaseMetadata(con, dialect);
                    String[] sql = getConfiguration().generateSchemaUpdateScript(dialect, metadata);
                    executeSchemaScript(con, sql);
                    return null;
                }
            }
        );
    }
    finally {
        if (dataSource != null) {
            configTimeDataSourceHolder.remove();
        }
    }
}
项目:spring4-understanding    文件:LocalSessionFactoryBean.java   
/**
 * Execute schema creation script, determined by the Configuration object
 * used for creating the SessionFactory. A replacement for Hibernate's
 * SchemaValidator class, to be invoked after application startup.
 * <p>Fetch the LocalSessionFactoryBean itself rather than the exposed
 * SessionFactory to be able to invoke this method, e.g. via
 * {@code LocalSessionFactoryBean lsfb = (LocalSessionFactoryBean) ctx.getBean("&mySessionFactory");}.
 * <p>Uses the SessionFactory that this bean generates for accessing a
 * JDBC connection to perform the script.
 * @throws DataAccessException in case of script execution errors
 * @see org.hibernate.cfg.Configuration#validateSchema
 * @see org.hibernate.tool.hbm2ddl.SchemaValidator
 */
public void validateDatabaseSchema() throws DataAccessException {
    logger.info("Validating database schema for Hibernate SessionFactory");
    DataSource dataSource = getDataSource();
    if (dataSource != null) {
        // Make given DataSource available for the schema update.
        configTimeDataSourceHolder.set(dataSource);
    }
    try {
        SessionFactory sessionFactory = getSessionFactory();
        final Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
        HibernateTemplate hibernateTemplate = new HibernateTemplate(sessionFactory);
        hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
        hibernateTemplate.execute(
            new HibernateCallback<Object>() {
                @Override
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    @SuppressWarnings("deprecation")
                    Connection con = session.connection();
                    DatabaseMetadata metadata = new DatabaseMetadata(con, dialect, false);
                    getConfiguration().validateSchema(dialect, metadata);
                    return null;
                }
            }
        );
    }
    finally {
        if (dataSource != null) {
            configTimeDataSourceHolder.remove();
        }
    }
}
项目:unitils    文件:HibernateAssert.java   
/**
 * Generates a <code>String</code> array with DML statements based on the Hibernate mapping files.
 *
 * @param configuration   The hibernate config, not null
 * @param session         The hibernate session, not null
 * @param databaseDialect The database dialect, not null
 * @return String[] array of DDL statements that were needed to keep the database in sync with the mapping file
 */
private static String[] generateDatabaseUpdateScript(Configuration configuration, Session session, Dialect databaseDialect) {
    try {
        DatabaseMetadata dbm = new DatabaseMetadata(session.connection(), databaseDialect);
        return configuration.generateSchemaUpdateScript(databaseDialect, dbm);
    } catch (SQLException e) {
        throw new UnitilsException("Could not retrieve database metadata", e);
    }
}
项目:cacheonix-core    文件:Configuration.java   
public void validateSchema(Dialect dialect, DatabaseMetadata databaseMetadata)
        throws HibernateException {
    secondPassCompile();

    String defaultCatalog = properties.getProperty( Environment.DEFAULT_CATALOG );
    String defaultSchema = properties.getProperty( Environment.DEFAULT_SCHEMA );

    Iterator iter = getTableMappings();
    while ( iter.hasNext() ) {
        Table table = (Table) iter.next();
        if ( table.isPhysicalTable() ) {


            TableMetadata tableInfo = databaseMetadata.getTableMetadata(
                    table.getName(),
                    ( table.getSchema() == null ) ? defaultSchema : table.getSchema(),
                    ( table.getCatalog() == null ) ? defaultCatalog : table.getCatalog(),
                            table.isQuoted());
            if ( tableInfo == null ) {
                throw new HibernateException( "Missing table: " + table.getName() );
            }
            else {
                table.validateColumns( dialect, mapping, tableInfo );
            }

        }
    }

    iter = iterateGenerators( dialect );
    while ( iter.hasNext() ) {
        PersistentIdentifierGenerator generator = (PersistentIdentifierGenerator) iter.next();
        Object key = generator.generatorKey();
        if ( !databaseMetadata.isSequence( key ) && !databaseMetadata.isTable( key ) ) {
            throw new HibernateException( "Missing sequence or table: " + key );
        }
    }
}
项目:hibernate-conventions    文件:DDLConventions.java   
private DatabaseMetadata getData() {
    try {
        Connection connection = ConventionUtils.getConnection(serviceRegistry);
        return new DatabaseMetadata(connection, dialect, configuration);
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}
项目:class-guard    文件:LocalSessionFactoryBean.java   
/**
 * Execute schema update script, determined by the Configuration object
 * used for creating the SessionFactory. A replacement for Hibernate's
 * SchemaUpdate class, for automatically executing schema update scripts
 * on application startup. Can also be invoked manually.
 * <p>Fetch the LocalSessionFactoryBean itself rather than the exposed
 * SessionFactory to be able to invoke this method, e.g. via
 * {@code LocalSessionFactoryBean lsfb = (LocalSessionFactoryBean) ctx.getBean("&mySessionFactory");}.
 * <p>Uses the SessionFactory that this bean generates for accessing a
 * JDBC connection to perform the script.
 * @throws DataAccessException in case of script execution errors
 * @see #setSchemaUpdate
 * @see org.hibernate.cfg.Configuration#generateSchemaUpdateScript
 * @see org.hibernate.tool.hbm2ddl.SchemaUpdate
 */
public void updateDatabaseSchema() throws DataAccessException {
    logger.info("Updating database schema for Hibernate SessionFactory");
    DataSource dataSource = getDataSource();
    if (dataSource != null) {
        // Make given DataSource available for the schema update.
        configTimeDataSourceHolder.set(dataSource);
    }
    try {
        SessionFactory sessionFactory = getSessionFactory();
        final Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
        HibernateTemplate hibernateTemplate = new HibernateTemplate(sessionFactory);
        hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
        hibernateTemplate.execute(
            new HibernateCallback<Object>() {
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    @SuppressWarnings("deprecation")
                    Connection con = session.connection();
                    DatabaseMetadata metadata = new DatabaseMetadata(con, dialect);
                    String[] sql = getConfiguration().generateSchemaUpdateScript(dialect, metadata);
                    executeSchemaScript(con, sql);
                    return null;
                }
            }
        );
    }
    finally {
        if (dataSource != null) {
            configTimeDataSourceHolder.remove();
        }
    }
}
项目:class-guard    文件:LocalSessionFactoryBean.java   
/**
 * Execute schema creation script, determined by the Configuration object
 * used for creating the SessionFactory. A replacement for Hibernate's
 * SchemaValidator class, to be invoked after application startup.
 * <p>Fetch the LocalSessionFactoryBean itself rather than the exposed
 * SessionFactory to be able to invoke this method, e.g. via
 * {@code LocalSessionFactoryBean lsfb = (LocalSessionFactoryBean) ctx.getBean("&mySessionFactory");}.
 * <p>Uses the SessionFactory that this bean generates for accessing a
 * JDBC connection to perform the script.
 * @throws DataAccessException in case of script execution errors
 * @see org.hibernate.cfg.Configuration#validateSchema
 * @see org.hibernate.tool.hbm2ddl.SchemaValidator
 */
public void validateDatabaseSchema() throws DataAccessException {
    logger.info("Validating database schema for Hibernate SessionFactory");
    DataSource dataSource = getDataSource();
    if (dataSource != null) {
        // Make given DataSource available for the schema update.
        configTimeDataSourceHolder.set(dataSource);
    }
    try {
        SessionFactory sessionFactory = getSessionFactory();
        final Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
        HibernateTemplate hibernateTemplate = new HibernateTemplate(sessionFactory);
        hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
        hibernateTemplate.execute(
            new HibernateCallback<Object>() {
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    @SuppressWarnings("deprecation")
                    Connection con = session.connection();
                    DatabaseMetadata metadata = new DatabaseMetadata(con, dialect, false);
                    getConfiguration().validateSchema(dialect, metadata);
                    return null;
                }
            }
        );
    }
    finally {
        if (dataSource != null) {
            configTimeDataSourceHolder.remove();
        }
    }
}
项目:pm-persistence-utils    文件:HibernateDDL.java   
protected static void updateCommand(String[] args) {
    String unitName, filename=null, url, username, password;
    if(args.length<5) System.out.println("Expected unitName jdbcUrl jdbcUsername jdbcPassword [filename]");
    else {
        unitName = args[1];
        url = args[2];
        username = args[3];
        password = args[4];
        if(args.length>5) filename = args[5];

        Configuration config = getConfiguration(unitName);
        Dialect dialect = Dialect.getDialect(config.getProperties());

        try {
            Connection conn = DriverManager.getConnection(url, username, password);

            DatabaseMetadata meta = new DatabaseMetadata(conn, dialect, config, true);

            List<SchemaUpdateScript> updateScriptList = config.generateSchemaUpdateScriptList(dialect, meta);
            String[] updateSQL = SchemaUpdateScript.toStringArray(updateScriptList);

            stringToStream(updateSQL, filename);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
项目:lams    文件:Configuration.java   
/**
 * @param dialect The dialect for which to generate the creation script
 * @param databaseMetadata The database catalog information for the database to be updated; needed to work out what
 * should be created/altered
 *
 * @return The sequence of DDL commands to apply the schema objects
 *
 * @throws HibernateException Generally indicates a problem calling {@link #buildMappings()}
 *
 * @see org.hibernate.tool.hbm2ddl.SchemaUpdate
 * 
 * @deprecated Use {@link #generateSchemaUpdateScriptList(Dialect, DatabaseMetadata)} instead
 */
@SuppressWarnings({ "unchecked" })
@Deprecated
public String[] generateSchemaUpdateScript(Dialect dialect, DatabaseMetadata databaseMetadata)
        throws HibernateException {
    List<SchemaUpdateScript> scripts = generateSchemaUpdateScriptList( dialect, databaseMetadata );
    return SchemaUpdateScript.toStringArray( scripts );
}