Apostila Caelum FJ-28 Erro ao adicionar

2 respostas
R

Galera eu to lendo a apostila da caelum e cheguei ate a parte de criar um dao generico eu fiz tudinho certo antes de criar um dao generico tava tudo funcinando perfeitamente porem depois que eu fiz os refactors que a apostila fala eu nao consigo adicionar no banco de dados mando o codigo… ele nao da erro nenhum apenas nao adiciona!!

Abraçoss!!

dao generico

package dao;

import java.util.List;

import org.hibernate.Session;

public class Dao<T> {
	
	private final Session session;
	private final Class classe;
	
	public Dao(Session session, Class classe){
		this.session = session;
		this.classe = classe;
	}
	
	public void adiciona(T u){
		this.session.save(u);
	}
	
	public void remove(T u){
		this.session.delete(u);
	}
	
	public void atualiza(T u){
		this.session.merge(u);
	}
	
	public T consulta(Long id){
		return (T) this.session.load(this.classe, id);
	}
	
	public List<T> ListaTodos(){
		return this.session.createCriteria(this.classe).list();
	}

}

DaoFactory

package dao;

import hibernate.Usuario;

import org.hibernate.Session;
import org.hibernate.Transaction;

import util.HibernateUtil;

public class DaoFactory {
	
	private final Session session;
	private Transaction transaction;
	
	public DaoFactory(){
		this.session = HibernateUtil.getSession();
	}
	
	public Dao<Usuario> getUsuarioDao(){
		return new Dao<Usuario>(this.session, Usuario.class);
	}
	
	public void beginTransaction() {
	    this.transaction = this.session.beginTransaction();
	}
	public void commit() {
	   this.transaction.commit();
	  this.transaction = null;
	}
	public boolean hasTransaction() {
	   return this.transaction != null;
	}
	public void rollback() {
	   this.transaction.rollback();
	   this.transaction = null;
	}
	public void close() {
	  this.session.close();
	}
}

o main pra adicionar um usuario

package main;

import hibernate.Usuario;

import java.util.List;


import dao.DaoFactory;
import dao.Dao;

public class TesteDeUsuario {
	
	public static void main(String[] args){

		Usuario u = new Usuario();
		u.setLogin("admin");
		u.setSenha("admin");
	
		Dao<Usuario> dao = new DaoFactory().getUsuarioDao();

		dao.adiciona(u);
	
		List<Usuario> lista = dao.ListaTodos();
	
		for (Usuario usuario : lista) {
		
			System.out.println(usuario.getLogin());
		}
	}
}

bom… que puder me ajudar ai obrigado!!

Abraço a todos!!!

2 Respostas

aeciovc

iai Rafael Mathias, blz?!

cara, é o seguinte… já li essa apostila da Caelum e é muito brother!!

a única coisa do código é que… o Hibernate trabalha com transação (isso diz na Apostila hehehe)!!

então no lugar de:

dao.adiciona(u);

usa:

dao.beginTransaction();
dao.adiciona(u); 
dao.commit();

blz??! acho que isso soluciona!!

flw!! :roll:

R

infelizmente nao funciona pois beginTransaction nao eh um metodo da classe Dao por isso nao da pra fazer isso!

Eu tantei fazer!!

A classe que tem esses metodos sao o DaoFactory eu at einstanciei ele e chamei tais metodos porem nao funcionou!!

MAs valeu ai!!

Criado 19 de janeiro de 2009
Ultima resposta 19 de jan. de 2009
Respostas 2
Participantes 2