CRIANDO SCRIPT DE GERAÇÃO DE SCHEMA VIA HIBERNATE TOOLS

Isso foi um caso que apareceu lá no laboratório que eu trabalho, que precisaremos mudar de SGBD, que bacana.. Assim uma forma simples de gerar um novo script para gerar as tabelas para, no nosso caso, o Oracle. O hibernate exporta o script independente da linguagem que o SGBD utiliza. Let’s go:

Antes de mais nada, precisamos ter o SGBD instalado e configurado com o nome e senha do usuário(obviamente).

Precisamos também possuir os Drivers para conexão Jdbc. Cada SGBD possui um Driver específico, que se trata de um arquivo .Jar. Além de servir como Driver, esse arquivo serve para termos acesso à Api JDBC do java.

Utilizaremos o Driver do Oracle que pode ser obtido neste link: http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html

Agora precisamos possuir todas as classes POJO’s (ou Entitys) mapeadas devidamente, via annotations JPA ou via arquivos hbm.xml próprios do hibernate. Segue exemplo utilizando Annotations:

@Entity
@Table (name="PRODUTO")
public class Produto implements Serializable{

private static final long serialVersionUID = 1L;

 

@Id @GeneratedValue
private Long id;

private String nome;

@Column(name="descricao",nullable=true,length=50)
private String descricao;

private Double preco;

public Long getId() {
      return id;
}

public String getDescricao() {
      return descricao;
}

...e por ai vai..

}

Tendo todas nossas entidades mapeadas de acordo com os relaciomentos definidos no nosso Banco de Dados, vamos adicioná-las a uma classe de utilidades do Hibernate afim da configuração do framework conhecer o mapeamento realizado pela JPA para gerar nosso Schema.

A seguir temos a implemetação do método getConfiguration da Classe HibernateUtil com as classes mapeadas adicionadas nessa configuração:

public AnnotationConfiguration getConfiguration(){

AnnotationConfiguration config = new AnnotationConfiguration();

config.configure("hibernate.cfg.xml");

// suas entidades mapeadas

config.addAnnotatedClass(Produto.class);

.

.

.

return config;

}

Agora vamos utilizar o arquivo hibernate.cfg.xml que se trata do arquivo de configuração do Hibernate.

<hibernate-configuration>

	<session-factory>
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDrive</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:meuSchema</property>
		<property name="hibernate.connection.username">usuario</property>
		<property name="hibernate.connection.password">minhaSenha</property>

		<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
		<property name="hibernate.default_schema">public</property>
		<property name="hibernate.bytecode.use_reflection_optimizer">true</property>
		<property name="hibernate.connection.pool_size">50</property>
		<property name="hibernate.jdbc.batch_size">0</property>
		<property name="hibernate.show_sql">true</property>
	</session-factory>

</hibernate-configuration>

A Tag Session-Factory do arquivo de configurações trata de validar ou exportar automaticamente o esquema DDL (ou Linguagem de definição de dados) para o banco de dados quando a Session-Factory é criada.

p { margin-bottom: 0.21cm; }

Nome da propriedade: hibernate.hbm2ddl.auto

p { margin-bottom: 0.21cm; }

Exemplo:

  • validate: validate the schema, makes no changes to the database.

  • update: update the schema.

  • create: creates the schema, destroying previous data.

  • create-drop: drop the schema at the end of the session.

Dependendo das utilizadas desejadas, adicionaremos as propriedades.

p { margin-bottom: 0.21cm; }

Falta agora implementar a rotina de geração do Schema, para isso utilizaremos a Classe SchemaExport do Hibernate.

Segue um exemplo:

public class GeraTabelas {

     private static void create(AnnotationConfiguration cfg) {
          new SchemaExport(cfg).create(true, true);
      }

     public static void main(String[] args){
          AnnotationConfiguration cfg = new AnnotationConfiguration();

          try{
               create(cfg.addAnnotatedClass(Produto.class));
          }
          catch(Exception e){
               e.printStackTrace();
          }
      }
}

Se você quiser exportar para um script sql, também é trivial, pois é negada, simples assim.

Abração

jdbc:oracle:thin:@localhost:1521:eficienciajus

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: