Generate an SQL DB creation script with Hibernate 4

前端 未结 1 734
失恋的感觉
失恋的感觉 2020-12-15 01:56

We are currently using Hibernate 3 and we use Hibernate Tools to generate SQL scripts for the DB schema.

We use the following Ant task



        
相关标签:
1条回答
  • 2020-12-15 02:36

    You can directly use the SchemaExport class to generate the DDL script :

    For Hibernate 4 :

        Configuration config = new Configuration();
    
        Properties properties = new Properties();
    
        properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
        properties.put("hibernate.connection.url", "jdbc:postgresql://localhost:5432/Test"); 
        properties.put("hibernate.connection.username", "username");
        properties.put("hibernate.connection.password", "password");
        properties.put("hibernate.connection.driver_class", "org.postgresql.Driver");
        properties.put("hibernate.show_sql", "true");
        config.setProperties(properties);
    
        config.addAnnotatedClass(MyMappedPojo1.class);
        config.addAnnotatedClass(MyMappedPojo2.class);
        ..................
    
        SchemaExport schemaExport = new SchemaExport(config);
        schemaExport.setDelimiter(";");
    
        /**Just dump the schema SQLs to the console , but not execute them ***/
        schemaExport.create(true, false);
    

    Update for Hibernate 5 :

        Properties properties = new Properties();
    
        properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
        properties.put("hibernate.connection.url", "jdbc:postgresql://localhost:5432/Test"); 
        properties.put("hibernate.connection.username", "username");
        properties.put("hibernate.connection.password", "password");
        properties.put("hibernate.connection.driver_class", "org.postgresql.Driver");
        properties.put("hibernate.show_sql", "true");
    
        StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
                    .applySettings(properties).build();
    
        MetadataSources metadataSource = new MetadataSources(serviceRegistry);
        metadataSource.addAnnotatedClass(MyMappedPojo1.class);
        metadataSource.addAnnotatedClass(MyMappedPojo2.class);
        ...........
    
        Metadata meta = metadataSource.buildMetadata();
    
        SchemaExport schemaExport = new SchemaExport();
        schemaExport.setDelimiter(";");
        schemaExport.execute(EnumSet.of(TargetType.STDOUT), Action.CREATE, meta);
    
    0 讨论(0)
提交回复
热议问题