Generate DDL with Hibernate
Generate DDL using a Java class
Hibernate core provide a Java class to generate DDL. SchemaExport class can be used to generate the schema in the Database, print schema in the console or create an sql file.
To illustrate this tutorial we will use the following annotated JPA entity :
package com.ubiteck.hibernate.sample;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class UserEntity {
@Id
private int id;
private String userName;
private String password;
}
Let's create an enumeration with the hibernate dialects we will use to generate our sql scripts. We will use MySQL,Oracle and Sybase.
enum Dialect {
MYSQL("org.hibernate.dialect.MySQLInnoDBDialect"),
ORACLE("org.unhcr.omss.db.oracle.OracleDialectDeferredFK"),
SYBASE("org.hibernate.dialect.SybaseAnywhereDialect");
private String className;
private Dialect(String className) {
this.className = className;
}
public String getClassName() {
return className;
}
}
Let's make the generator class. In the following class we are using
SchemaExport
class to do the job. Because we will not export in the database we don't need to provide a full set of configuration. We are just passing the database type as an hibernate dialect and a bunch of class. In the following example we will use only one entity class (User Entity).
public class HibernateDDLGenerator {
public static void main(String[] args) { new HibernateDDLGenerator().execute(Dialect.ORACLE,UserEntity.class);
}
private void execute(Dialect dialect, Class<?>... classes) {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.setProperty(Environment.DIALECT, dialect.getClassName());
for (Class<?> entityClass : classes) {
configuration.addAnnotatedClass(entityClass);
}
SchemaExport schemaExport = new SchemaExport(configuration);
schemaExport.setDelimiter(";");
schemaExport.setOutputFile(String.format("%s_%s.%s ", new Object[] {"ddl", dialect.name().toLowerCase(), "sql" }));
boolean consolePrint = true;
boolean exportInDatabase = false;
schemaExport.create(consolePrint, exportInDatabase);
}
}
The result of the execution is a file (ddl_oracle.sql) containing the following SQL to create our entity table.
drop table UserEntity cascade constraints;
create table UserEntity (
id number(10,0) not null,
password varchar2(255 char),
userName varchar2(255 char),
primary key (id)
);
DDL script for Oracle
Tags:
java
,
tutorial
,
import
,
class
,
hibernate
,
generate
,
entity
,
schema
,
illustrate
,
javax.persistence.entity;import