Dúvida projeto web com hibernate

8 respostas
joaolenosi

Boa tarde pessoal, estou com uma pequena dúvida. Eu criei um projeto usando mysql e decidi trocar de banco , e optei pelo o postgreSQL.
Existe algum dado alem do hibernate.cfg.xml e o drive que deve-se alterar?

8 Respostas

Hebert_Coelho

joaolenosi:
Boa tarde pessoal, estou com uma pequena dúvida. Eu criei um projeto usando mysql e decidi trocar de banco , e optei pelo o postgreSQL.
Existe algum dado alem do hibernate.cfg.xml e o drive que deve-se alterar?

A biblioteca “.jar” e caso o gerador de ID ñ esteja em AUTO ou SEQUENCE você terá que criar sequences para o postgres. [=
Q eu me lembre, tem isso. [=

joaolenosi

aqui era o hibernate.cfg.xml do MySQL

<?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">

<!--Configurações do hibernate: mapeamento dos objetos -->
<hibernate-configuration>
 <!--session-factory atraves dele é que eu faço o mapeamento e as configurações do hibernate -->
    <session-factory>
       <!--Configuração com o banco mysql e dialecto -->
       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!--Nome do driver e referencia do banco -->
       <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/login</property> <!--MODIFICAR -->
       <property name="hibernate.connection.username">root</property>
       <property name="hibernate.connection.password">160406</property>
       <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!--Nome da classe responsavel por fazer a conversação entre o banco de dados o hibernate -->
       <property name="current_session_context_class">thread</property>
       <property name="hibernate.hbm2dll.auto">update</property>

       <mapping class="com.br.joaoleno.usuario.Usuario"></mapping>

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

Modifiquei para o seguinte hibernate.cfg.xml - PostgreSQL

<?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">

<!--Configurações do hibernate: mapeamento dos objetos -->
<hibernate-configuration>
 <!--session-factory atraves dele é que eu faço o mapeamento e as configurações do hibernate -->
    <session-factory>
       <!--Configuração com o banco mysql e dialecto -->
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>   
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5433/login</property>  
        <property name="hibernate.connection.username">postgres</property>  
        <property name="hibernate.connection.password">160406</property>  
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>    
        <property name="current_session_context_class">thread</property>  
        <property name="hibernate.hbm2dll.auto">update</property>  
       
       
       <mapping class="com.br.joaoleno.usuario.Usuario"></mapping>

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

jakefrog, quais bibliotecas .jar você estar se referindo ? eu já tenho todas as necessarios no projeto, apenas removi o drive do MySQL e adicionei o do PostgreSQL.
Eu não entendi essa parte do gerador de Id. Você tá querendo dizer que o meu campo id, tem que ser auto_increment no PostgreSQL? no postgre tem um tipo de dado, chamado serial , que ele auto_incrementa.
Foi isso que você quis dizer?

Hebert_Coelho

joaolenosi:
jakefrog, quais bibliotecas .jar você estar se referindo ? eu já tenho todas as necessarios no projeto, apenas removi o drive do MySQL e adicionei o do PostgreSQL.
Eu não entendi essa parte do gerador de Id. Você tá querendo dizer que o meu campo id, tem que ser auto_increment no PostgreSQL? no postgre tem um tipo de dado, chamado serial , que ele auto_incrementa.
Foi isso que você quis dizer?
Quase isso. Quanto ao JAR é isso mesmo.

Quanto ao gerador de ID, nas sua Entity você em algum momento aponta o @Id e provavelmente com @SequenceGenerator. É desse cara que eu estou falando. [=

joaolenosi

JakeFrog, estar é a minha classe que aponto o generatorValue. Eu já criei o campo do tipo serial, que tem a mesma funcionalidade da Sequence.
Eu tenho que modificar alguma coisa nessa classe?

@Entity//Entidade
@Table(name = "usuario")

public class Usuario {
    @Id
    @GeneratedValue
    
    private Integer idUsuario;
   // @Column (name="nomeUsuario")//Use se a tag Column quando o atributo no banco de dados seja um e a class seja outro, como por exemplo, aí é como se no meu banco de dados eu tivesse um campo com esse nome  e na minha classe fosse outro
    private String nome;
    @org.hibernate.annotations.NaturalId //Siginifica que o campo email, é único, ou seja, não pode haver email repetido.
    private String email;
    private String senha;
    private String idioma;
    private Boolean estatus;
    
  
    
 public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public String getIdioma() {
        return idioma;
    }

    public void setIdioma(String idioma) {
        this.idioma = idioma;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public Boolean getEstatus() {
        return estatus;
    }

    public void setEstatus(Boolean status) {
        this.estatus = status;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Usuario other = (Usuario) obj;
        if (this.idUsuario != other.idUsuario && (this.idUsuario == null || !this.idUsuario.equals(other.idUsuario))) {
            return false;
        }
        if ((this.nome == null) ? (other.nome != null) : !this.nome.equals(other.nome)) {
            return false;
        }
        if ((this.email == null) ? (other.email != null) : !this.email.equals(other.email)) {
            return false;
        }
        if ((this.senha == null) ? (other.senha != null) : !this.senha.equals(other.senha)) {
            return false;
        }
        if ((this.idioma == null) ? (other.idioma != null) : !this.idioma.equals(other.idioma)) {
            return false;
        }
        if (this.estatus != other.estatus && (this.estatus == null || !this.estatus.equals(other.estatus))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 13 * hash + (this.idUsuario != null ? this.idUsuario.hashCode() : 0);
        hash = 13 * hash + (this.nome != null ? this.nome.hashCode() : 0);
        hash = 13 * hash + (this.email != null ? this.email.hashCode() : 0);
        hash = 13 * hash + (this.senha != null ? this.senha.hashCode() : 0);
        hash = 13 * hash + (this.idioma != null ? this.idioma.hashCode() : 0);
        hash = 13 * hash + (this.estatus != null ? this.estatus.hashCode() : 0);
        return hash;
    }
    
    
  
}
joaolenosi

jakefrog tem como você testar meu projeto aí ?
Te passo o projeto compactado, ja com a tabela no arquivo txt, você nem tera trabalho, só basta copiar e colar pra criar a tabela e abrir o projeto no netbeans !!

joaolenosi

Alguem poderia testar o projeto ?

Hebert_Coelho

joaolenosi:
jakefrog tem como você testar meu projeto aí ?
Te passo o projeto compactado, ja com a tabela no arquivo txt, você nem tera trabalho, só basta copiar e colar pra criar a tabela e abrir o projeto no netbeans !!

Tenho não. Sorry.

Você tentou? Deu algum erro ao executar com o banco postgres? Ele estava funcionando antes?

Criado 9 de julho de 2012
Ultima resposta 9 de jul. de 2012
Respostas 8
Participantes 2