Pessoal. Tenho um programa e estou tentando mudar o acesso para banco de dados. Comecei com o Hibernate + java + eclipse + PostGreSql.
O problema que estou enfrentando é o seguinte.
Eu gravo as informações no banco, tudo ok, tudo certinho…
Então quando eu vou ler as informações, o meu código apaga tudo o que estava no banco.
Tentei várias coisas, mas não consigo ver o erro.
Podem me ajudar?
-> Classe que eu acesso o banco, gravo e leio o que está lá.
package com.hibernate.chapter1;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class TestEmployee {
/**
* @param args
*/
public static void main(String[] args) {
//enviaDados();
recebeDados();
}
public static void enviaDados()
{//persiste no banco
Session session = null ;
Transaction tx = null;
try{
// aqui nós lemos as configurações do arquivo hibernate.cfg.xml
// e deixamos o Hibernate pronto para trabalhar
SessionFactory factory = new Configuration().addAnnotatedClass(Employee.class).configure("hibernate.cfg.xml").buildSessionFactory(); // deve ser instanciado somente uma vez
session = factory.openSession();
// inicia uma transação
tx = session.beginTransaction();
//povoando arraylist
ArrayList <Integer> vetor = new ArrayList();
for(int i=0;i<10;++i)
{
vetor.add(i);
}
for ( int i=0; i < vetor.size(); i++ ) {
Employee empData = new Employee();
// alex.setEmpId(50);
empData.setEmpDada(vetor.get(i));
session.save(empData);
//alex.setEmpId(i);
// System.out.println("gravei uma id:" + alex.getEmpId());
//session.save(alex);
session.flush();
}
tx.commit();
// fecha a transação
}catch(Exception e){
// houve algum problema? vamos retornar o banco de dados
// ao seu estado anterior
if(tx != null){
tx.rollback();
System.out.println(e.getMessage());
}
}finally{
//session.close();
}
}//
public static void recebeDados()
{//obtem dado persistido no banco
// SessionFactory factory = new Configuration().addClass(Employee.class).buildSessionFactory();
//Session session = factory.openSession();
try {
// aqui nós lemos as configurações do arquivo hibernate.cfg.xml
// e deixamos o Hibernate pronto para trabalhar
SessionFactory factory = new Configuration().addAnnotatedClass(Employee.class).configure("hibernate.cfg.xml").buildSessionFactory(); // deve ser instanciado somente uma vez
// abre uma nova sessão
Session session = factory.openSession();
List <Employee> lista_pessoa = new ArrayList();
lista_pessoa = session.createCriteria(Employee.class).list();
int tamanho_lista = lista_pessoa.size();
String dados = "";
for(int i=0; i<tamanho_lista; ++i)
{
Employee a = lista_pessoa.get(i);
System.out.println(a.getEmpDada());
session.flush();
}
session.clear();
// ArrayList <Integer> recebevetor = new ArrayList<Integer>();
/* Query query = session.createQuery("from Employee");
List listaUsuarios = query.list();
Iterator it = listaUsuarios.iterator();
while(!it.hasNext()){
Employee a = (Employee)it.next();
//recebevetor.add(iterator,empData.getEmpDada());
System.out.println("Id:" + a.getEmpDada());
}
*/
}
catch(Exception erro) {
// houve algum problema? vamos retornar o banco de dados
// ao seu estado anterior
System.out.println(erro.getMessage());
}
}
}//fecha classe
-> gerar a tabela e tals…
package com.hibernate.chapter1;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
//@Table(name = "USUARIO")
//@TableGenerator(name = "USUARIO_GEN", table = "GENERATOR_ID", pkColumnName = "ID", valueColumnName = "VALOR", pkColumnValue = "USUARIO", allocationSize = 1)
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int empId;
private String empName;
private int empDada;
public int getEmpDada() {
return empDada;
}
public void setEmpDada(int empDada) {
this.empDada = empDada;
}
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
}
e aqui o XML
<?xml version='1.0'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://localhost:5432/Hibernate</property>
<property name="connection.username">postgres</property>
<property name="connection.password">123456</property>
<property name="hibernate.default_schema">Teste</property>
<property name="current_session_context_class">thread</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">2</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
<mapping resource="hibernate.cfg.xml"/>
</session-factory>
</hibernate-configuration>
Alguém clareia minha vista ai…
Obrigado!