Problema Hibernate

olá

gostaria de saber como faço para o hibernate atualizar o meu banco de dados sem apagar todas as tabela que já tem e criálas novamente, vi que o comando

permite isso, mas não está funcionando, ele continua a apagar as tabela e re-crialás

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
        <property name="hibernate.connection.password">042507</property>
        <property name="hibernate.connection.url">jdbc:jtds:sqlserver://127.0.0.1/Mapeamento</property>
        <property name="hibernate.connection.username">adm</property>
        <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
        
		<property name="hibernate.hbm2ddl.auto">update</property>
		
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        
        <mapping class="mapeamento.modelo.Cidade"/>
        <mapping class="mapeamento.modelo.Unidade"/>
        <mapping class="mapeamento.modelo.Nivelacesso"/>
        <mapping class="mapeamento.modelo.Usuario"/>       

    </session-factory>
</hibernate-configuration>

gera banco

package mapeamento.util;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GeraBanco {
	
	public static void main(String[] args)
	{
		Configuration cfg = new AnnotationConfiguration();
		cfg.configure();
		
		SchemaExport se = new SchemaExport(cfg);
		se.create(true, true);	
	}
}

Na sua classe, aquele ExportSchema, qdo vc faz o create, ele ignora o update do xml

tenho que tirar o create?

Sim

agora quando eu altero o nome de uma coluna o hibernate insere essa coluna no banco e mantem a anterior é assim mesmo? tem como fazer ele alterar propriamente dito?

Ele deve estar gerando de novo por que voce esta chamando o GeraBanco, nao?

Troque o SchemaExport por SchemaUpdate

então Paulo, eu estou fazendo um projeto e as vezes quero inserir uma classe(tabela) nova ou alterar e rodo o gera banco para ele atualizar o banco de dados, ai quando ele executa ele apaga todas as tabelas e cria novamente, tem como fazer isso sem o hibernate excluir todas as tabelas?

Então… é igual o paulo falou:

[code]package mapeamento.util;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GeraBanco {

public static void main(String[] args)
{
	Configuration cfg = new AnnotationConfiguration();
	cfg.configure();
	
	SchemaExport se = new SchemaExport(cfg);
	se.create(true, true);	
}

}[/code]

esse trecho seu exporta e cria o banco de dados(o create excluir e refaz todo o eschema). você tem que tirar esse objeto (SchemaExport) porque vc já configurou o update no no xml. Por vc estar usando o SchemaExport no código, está anulando essa linha:

agora quando eu faço uma alteração como renomear um atributo(coluna) ele não renomeia ele cria um campo com o nome renomeado, isso é normal?

cara, tem outras opções

acho q é o validate

tem q dar uma olhada

Acredito que seja normal sim … não tem como o hibernate prever se vc quer atualizar ou excluir uma coluna e por outra. Aí como garantia ele cria outra e deixa a antiga com os antigos dados.