Insercao hibernate

entao pessoal estou tentando inserir objetos em um banco postgresql e estou conseguindo,
porém cada vez que utilizo o metodo de insercao ele simplesmenete apaga tudo que tem no banco e inseri o q esta sendo passado como parametro para o metodo de insercao que eu criei(ou melhor, vi em um exemplo)

[code]package Hiber;

import hiber.Amigos;
import hiber.AmigosDAO;
import org.hibernate.Session;

public class Gerenciadora {

public static void main(String[] args) {
    Gerenciadora g = new Gerenciadora();
    
    
    g.inserir("navia", 2, "rua betel");
        

    AmigosDAO.getSessionFactory().close();
}

private void createAndStoreEvent(String title,int id,String endereco) {
    Session session = AmigosDAO.getSessionFactory().getCurrentSession();
    
    
    Amigos amigo=new Amigos();
    amigo.setid(id);
    amigo.setNome(title);
    amigo.setendereco(endereco);

    session.save(amigo);

    session.getTransaction().commit();

}

}[/code]

por exemplo qnd eu executar esse metodo ele apagara todo o conteudo do banco e restara apenas o registro inserido
se alguem puder ajudar!!

Olha só… Pra começar não achei o método inserir na classe Gerenciadora, mas supondo que o método inserir seja o método createAndStoreEvent, vou te fazer umas perguntas…

Você está usando sempre o ID 2 para testar? Porque se não me engano o método save de Session funciona como um update caso a informação ja exista no banco… Será que não é por isso que você diz que ele esta apagando o que ja tinha?

Abs

é postei o codigo que eu tava mechendo, tentando fazer outro metodo
mas mesmo assim!!

o q me chamou a atencao foi q naquelas linhas em que ele mostra diversas informacoes sobre o hibernate depois q vc compila apareceu a linha:

12:47:57,953 DEBUG SchemaExport:303 - create table amigos (id int4 not null, nome varchar(255), endereco varchar(255), primary key (id))

pelo q eu entendi é como se ele tivesse criando uma nova tabela a cada compilacao

sei la continuo testando e acho estranho pra caramba!!
em jdbc umas que uma tupla foi adicionado pra retira de la so com delete
estranho!!

O que tem na sua classe AmigoDAO? Posta ela ai!

[code]package hiber;

import org.hibernate.;
import org.hibernate.cfg.
;

public class AmigosDAO {
private static final SessionFactory factory;

static {
    try {
        // Create the SessionFactory from hibernate.cfg.xml
        factory = new Configuration().configure().buildSessionFactory();
    } catch (Throwable ex) {
        // Make sure you log the exception, as it might be swallowed
        System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}

public static SessionFactory getSessionFactory() {
    return factory;
}

}
[/code]

pessoal sera q ninguem pode ajudar???
a duvida faz sentido pois executei o projeto sem antes criar a tabela lá no postgre, e ele criou sozinho uma nova tabela!!
ou seja, todo vez que rodo o projeto ele cria uma novo tabela e perde-se os dados da tabela anterior
isso é normal??? estou comentendo algum erro???

Vc tah usando JPA ou direto hibernate?
Posta o teus arquivos de configuracao (persistence.xml ou hibernate.cfg.xml). Dentro desses arquivos deve estar dizendo para criar o banco toda vez que vc le suas classes, ai ele faz isso, apaga tudo e cria de novo (atualizando seu banco). Se vc naum quer mais que atualize, ai tem que comentar essa linha la.

olha nao sei o q é jpa mas acho q estou fazendo diretamente pelo hibernate

vou postar o arquivo hibernate.cfg.xml
talvez ajude!!

[code]<?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>

&lt;session-factory&gt;

    &lt;!-- Database connection settings --&gt;
    &lt;property name="connection.driver_class"&gt;org.postgresql.Driver&lt;/property&gt;
    &lt;property name="connection.url"&gt;jdbc:postgresql://localhost:5432&lt;/property&gt;
    &lt;property name="connection.username"&gt;postgres&lt;/property&gt;
    &lt;property name="connection.password"&gt;161086&lt;/property&gt;
   
   &lt;!-- JDBC connection pool (use the built-in) --&gt;
    &lt;property name="connection.pool_size"&gt;1&lt;/property&gt;

    &lt;!-- SQL dialect --&gt;
    &lt;property name="dialect"&gt;org.hibernate.dialect.PostgreSQLDialect&lt;/property&gt;

    &lt;!-- Enable Hibernate's automatic session context management --&gt;
    &lt;property name="current_session_context_class"&gt;thread&lt;/property&gt;

    &lt;!-- Disable the second-level cache  --&gt;
    &lt;property name="cache.provider_class"&gt;org.hibernate.cache.NoCacheProvider&lt;/property&gt;

    

    &lt;!-- Echo all executed SQL to stdout --&gt;
    &lt;property name="show_sql"&gt;true&lt;/property&gt;  
    


    &lt;mapping resource="Amigos.hbm.xml"/&gt;

&lt;/session-factory&gt;

</hibernate-configuration>
[/code]

obrigado

só pra acrescentar vou postar algumas linhas que aparecem no output qnd eu compilo:

13:25:28,625 INFO SchemaExport:154 - Running hbm2ddl schema export
13:25:28,625 DEBUG SchemaExport:170 - import file not found: /import.sql
13:25:28,625 INFO SchemaExport:179 - exporting generated schema to database
13:25:28,640 DEBUG SchemaExport:303 - drop table amigos
13:25:28,656 DEBUG SchemaExport:303 - drop sequence hibernate_sequence
13:25:28,656 DEBUG SchemaExport:303 - create table amigos (id int4 not null, nome varchar(255), endereco varchar(255), primary key (id))
13:25:28,671 DEBUG SchemaExport:303 - create sequence hibernate_sequence
13:25:28,671 INFO SchemaExport:196 - schema export complete
Hibernate: select nextval (‘hibernate_sequence’)
Hibernate: insert into amigos (nome, endereco, id) values (?, ?, ?)
13:25:28,828 INFO SessionFactoryImpl:769 - closing
13:25:28,828 INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:postgresql://localhost:5432
BUILD SUCCESSFUL (total time: 4 seconds)

acho q ta ligado ao q vc disse de criar uma nova tabela

Eu nao vi a propriedade que ditava isso (hibernate.hbm2ddl.auto), seila se isso tem algum valor default ou esta pegando de outro lugar.

Procura por esse propriedade em:

http://www.hibernate.org/hib_docs/reference/en/html/session-configuration.html

E faz uns testes colocando ‘update’ e ‘validate’.

Mas seila, nao tendo essa propriedade setada, pelo que eu me lembro ele nao devia gerar a database.

[quote=olinda]só pra acrescentar vou postar algumas linhas que aparecem no output qnd eu compilo:

13:25:28,625 INFO SchemaExport:154 - Running hbm2ddl schema export
13:25:28,625 DEBUG SchemaExport:170 - import file not found: /import.sql
13:25:28,625 INFO SchemaExport:179 - exporting generated schema to database
13:25:28,640 DEBUG SchemaExport:303 - drop table amigos
13:25:28,656 DEBUG SchemaExport:303 - drop sequence hibernate_sequence
13:25:28,656 DEBUG SchemaExport:303 - create table amigos (id int4 not null, nome varchar(255), endereco varchar(255), primary key (id))
13:25:28,671 DEBUG SchemaExport:303 - create sequence hibernate_sequence
13:25:28,671 INFO SchemaExport:196 - schema export complete
Hibernate: select nextval (‘hibernate_sequence’)
Hibernate: insert into amigos (nome, endereco, id) values (?, ?, ?)
13:25:28,828 INFO SessionFactoryImpl:769 - closing
13:25:28,828 INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:postgresql://localhost:5432
BUILD SUCCESSFUL (total time: 4 seconds)

acho q ta ligado ao q vc disse de criar uma nova tabela[/quote]

Que IDE você está usando? Por acaso esta usando algum plugin do Eclipse?

Se for o Netbeans da uma olhada no seu build-impl.xml que fica dentro da pasta nbproject e olha se tem algum target no seu ant que manda apagar a tabela e criar outra…

Esgraçado isso acontecer na hora que está compilando o projeto…