[RESOLVIDO]Goodbuy - Duvida Refatorar classes - Alterar - Remover (ex Opcional)

Boa tarde galera… estou começando agora a estudar java web e resolvi me aventurar com o Vraptor hehe

estou utilizando a apostila da caelum…

estou com uma duvida… na hora de refatorar as minhas classes remover e alterar é assim mesmo que tem que ficar ?
tenho duvida dessa Session… é mesmo necessaria ?

elas ficaram assim…

ProdutoDAO

package br.com.caelum.goodbuy.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.caelum.goodbuy.modelo.CriadorDeSession;
import br.com.caelum.goodbuy.modelo.Produto;

public class ProdutoDao {

	private Session session;

	public ProdutoDao() {

		this.session = CriadorDeSession.getSession();

	}

	public void salva(Produto produto) {
		Transaction tx = session.beginTransaction();
		session.save(produto);
		tx.commit();
	}

	public void AlteraProduto(Produto produto) {
		Transaction tx = session.beginTransaction();
		produto.setPreco(700.00);
		session.update(produto);
		tx.commit();
	}

	public void RemoveProduto(Produto produto) {
		Transaction tx = session.beginTransaction();
		session.delete(produto);
		tx.commit();
	}

}

RemocaoDeProduto

package br.com.caelum.goodbuy.modelo;

import org.hibernate.Session;
import br.com.caelum.goodbuy.dao.ProdutoDao;

public class RemocaoDeProduto {

	public static void main(String args[]) {

		Session session = CriadorDeSession.getSession();

		Produto produto = LoadProduto(session);

		new ProdutoDao().RemoveProduto(produto);

	}

	private static Produto LoadProduto(Session session) {
		Produto produto = (Produto) session.load(Produto.class, 1L);
		return produto;
	}

}

AlteracaoDeProduto

package br.com.caelum.goodbuy.modelo;

import org.hibernate.Session;
import br.com.caelum.goodbuy.dao.ProdutoDao;

public class AlteracaoDeProduto {

	public static void main(String args[]) {

		Session session = CriadorDeSession.getSession();

		Produto produto = LoadProduto(session);

		new ProdutoDao().AlteraProduto(produto);
	}

	private static Produto LoadProduto(Session session) {
		Produto produto = (Produto) session.load(Produto.class, 1L);
		return produto;
	}

}

Você quer fazer uma classe pra cada operação?

Eu não entendo nada de VRaptor, mas acredito que isso esteja errado :slight_smile:

No caso de acesso à banco de dados, eu vejo como uma boa prática ter uma classe por entidade, então sua primeira versão me parece ser a mais correta

Boa tarde!

Não sei se consegui entender bem essa sua pergunta, mas se for referente aos session, sim eles são importantes.
Essa session é a sessão do hibernate que vai persistir os seus dados.

Essa sua classe CriadorDeSession da qual voce pega a session no construtor da classe ProdutoDao equivale as ConnectionFactory que você deve ter utilizado quando salvava os dados no banco de dados sem o hibernate. a Classe CriadorDeSession faz a conexão com o banco de dados para você e devolve uma sessão com a qual você salvará, deletará, atualizara os dados durante todo o seu Dao.

Era isso?

Matheus,

Visto que estais seguindo os estudos da FJ-28, as implementações que você está apresentando devem funcionar corretamente, se a libs e o seu web.xml assim como sua Factory estiver tudo certinho.

Mais adiante na apostila, você aprenderá formas usuais destas implementações…

Bons estudos… e qualquer coisa pode contar conosco.

Obrigado a todos pelas respostas :smiley:

vou continuar estudando… a duvida era só se eu tinha refatorado certo as classes…

VLW :smiley: