Olá.
Eu tenho uma aplicação em funcionamento e nela tenho uma classe chamada GerarDDLs o qual faz uma chamada desta forma:
/**
* primeiro parametro => apresenta os Metadado durante a criação.
* segundo parametro => manda criar os Metadados (True = APAGA FISICAMENTE O BANCO)
*/
new SchemaExport(cfg).create(true, false);
Este tipo de abordagem me é necessário para gerar somente os DDL´s sem aplicá-los definitivamente no banco, isso me ajuda a verificar o SQL gerado para identificar algum relacionamento ou mapeamento incorreto.
Eu gostaria de fazer o mesmo utilizando JPA, ou seja, só posso utilizar o mapeamento:
<property name="hibernate.hbm2ddl.auto" value="create" />
e consecutivamente o Hibernate irá efetivar no banco, ou tem como apenas informar para que seja gerado o DDL (sql puro) sem aplicá-lo ?
Obrigado.
Se não entendi errado, você gostaria de utilizar do mesmo jeito que fazia antes, só que com JPA ?
Eu faço assim:
[code]Ejb3Configuration cfg = new Ejb3Configuration();
Configuration hbmcfg = cfg.getHibernateConfiguration();
boolean bCreate = false; // você decide
if (bCreate) {
SchemaExport s = new SchemaExport(hbmcfg);
// boolean script, boolean export, boolean justDrop,boolean justCreate
s.execute(true, false, false, false);
} else {
SchemaUpdate s = new SchemaUpdate(hbmcfg);
s.execute(true, false);
};[/code]
E lá no persistence.xml deixei assim:
[quote=jamirdeajr]Se não entendi errado, você gostaria de utilizar do mesmo jeito que fazia antes, só que com JPA ?
Eu faço assim:
[code]Ejb3Configuration cfg = new Ejb3Configuration();
Configuration hbmcfg = cfg.getHibernateConfiguration();
boolean bCreate = false; // você decide
if (bCreate) {
SchemaExport s = new SchemaExport(hbmcfg);
// boolean script, boolean export, boolean justDrop,boolean justCreate
s.execute(true, false, false, false);
} else {
SchemaUpdate s = new SchemaUpdate(hbmcfg);
s.execute(true, false);
};[/code]
E lá no persistence.xml deixei assim:
Perfeito Jamir!
Esta era a formula mágica que não esta conseguindo encontrar na NET.
Muito obrigado, seu código irá me ajudar muito.
Que nosso Senhor e Salvador Jesus lhe abençoe.
-----[ Editado ]-----
Jamir, só faltou informar qual o persistence-unit, conforme o código abaixo:
public static void main(String[] args) {
Ejb3Configuration cfg = new Ejb3Configuration();
// OBS: default eh o nome de meu persistence-unit no persistence.xml.
// O configure vai procurar o persistence.xml dentro da pasta META-INF que tem que estar no classpath
cfg.configure("default", null);
Configuration hbmcfg = cfg.getHibernateConfiguration();
boolean bCreate = false; // você decide
if (bCreate) {
SchemaExport s = new SchemaExport(hbmcfg);
// boolean script, boolean export, boolean justDrop,boolean justCreate
s.execute(true, false, false, false);
} else {
SchemaUpdate s = new SchemaUpdate(hbmcfg);
s.execute(true, false);
};
}
Obrigado.
É mesmo!
Copiei de um projeto que estou usando e editei, sem querer deletei linhas demais!
Eu uso persistence unit condicional, pois o banco de dados está localizado em lugares diferentes quanto estou em casa ou no trabalho!
InetAddress address = InetAddress.getLocalHost();
if(address.getHostAddress().equals("192.168.1.100"))
cfg.configure("baseLOCAL", null);
else
cfg.configure("baseQLA", null); //
Obrigado,
Deus abençoe você também
Mas onde o script é gerado? Pois não está aparecendo no console!
Obrigado!