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?
Dúvida projeto web com hibernate
8 Respostas
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.A biblioteca “.jar” e caso o gerador de ID ñ esteja em AUTO ou SEQUENCE você terá que criar sequences para o postgres. [=
Existe algum dado alem do hibernate.cfg.xml e o drive que deve-se alterar?
Q eu me lembre, tem isso. [=
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>
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?
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.Quase isso. Quanto ao JAR é isso mesmo.
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?
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. [=
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;
}
}
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 !!
Alguem poderia testar o projeto ?
jakefrog tem como você testar meu projeto aí ?Tenho não. Sorry.
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 !!
Você tentou? Deu algum erro ao executar com o banco postgres? Ele estava funcionando antes?