Dúvida em hibernate

Opa :smiley:

Como que eu faço para realizar essas ações nmo hibernate:

	public void atualizaStatus(GrupoProcedimentoBean grupoProcedimento) {
	try {
		Connection connection = ConectaDb.getConnection();
		PreparedStatement stmt = connection
					.prepareStatement("UPDATE grupo_procedimento SET grupo_procedimento_status=? WHERE grupo_procedimento_id=?");
			stmt.setInt(1, grupoProcedimento.getGrupoProcedimentoStatus());
			stmt.setInt(2, grupoProcedimento.getGrupoProcedimentoID());
			// executa
			stmt.execute();

			// fecha
			stmt.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public GrupoProcedimentoBean busca(Integer id) {

		GrupoProcedimentoBean grupoProcedimento = new GrupoProcedimentoBean();

		try {
			Connection connection = ConectaDb.getConnection();
			PreparedStatement stmt = connection
					.prepareStatement("SELECT * FROM grupo_procedimento WHERE grupo_procedimento_id=?");
			stmt.setInt(1, id);
			ResultSet rs = stmt.executeQuery();
			if (!rs.next())
				return null;

			grupoProcedimento.setGrupoProcedimentoCodigo(rs
					.getInt("grupo_procedimento_codigo"));
			grupoProcedimento.setGrupoProcedimentoNome(rs
					.getString("grupoProcedimento_nome"));
			grupoProcedimento.setGrupoProcedimentoNome(rs
					.getString("grupo_procedimento_nome"));
			grupoProcedimento.setGrupoProcedimentoObservacao(rs
					.getString("grupo_procedimento_observacao"));
			grupoProcedimento.setGrupoProcedimentoStatus(rs
					.getInt("grupo_procedimento_status"));

			rs.close();
			stmt.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return grupoProcedimento;

	}

Só consegui dar um save, update geral e um delete pelo hibernate rss
[]'s

É simples, se voce quer loadar, mudar algo e salvar:

SuaClass sc = (SuaClasse) session.get(SuaClasse.class, id);
Transaction tx = session.beginTransaction();

sc.setBla("bla");
session.update(sc);
session.flush();

tx.commit();
tx = null;

Basta fazer o seguinte:

public GrupoProcedimentoBean busca(Integer id) {   
        try {
            return (GrupoProcedimentoBean) HibernateUtil
            		.currentSession().load(GrupoProcedimentoBean.class, id);
        } catch (final HibernateException e) {
            e.printStackTrace();
        }
}

Dá uma lida nesse link: http://www.hibernate.org/43.html

Olá, mendigosujo.

Primeiramente, vc pode utilizar uma classe-mãe para os métodos gerais e as classes-filhas para consultas específicas. No caso, seria uma DAO para GrupoProcedimento. Use o template na classe-mãe para obter as classes referentes a entidades.

No caso do atualizaStatus vc pode utilizar o merge mesmo, já que vc está passando um bean como parâmetro.

Infelizmente não tenho acesso a minha máquina agora, depois eu te mando um código de exemplo.

Abraço.

Flávio

Bom dia, mendigosujo.

Conforme prometi, seguem os códigos:

1- Classe-mãe com template

[code]import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

public class BaseDAO {

private EntityManager _entityManager = null;
private Class _class = null;

public BaseDAO(Class entityClass) {
	_class = entityClass;
	_entityManager = HibernateFactory.createEntityManager();
}

public void insert(Entity entity) {
	_entityManager.getTransaction().begin();
	_entityManager.persist(entity);
	_entityManager.getTransaction().commit();
}

public void update(Entity entity) {
	_entityManager.getTransaction().begin();
	_entityManager.merge(entity);
	_entityManager.getTransaction().commit();
	
}

public void delete(Entity entity) {
	_entityManager.getTransaction().begin();
	
	entity = _entityManager.merge(entity);
	_entityManager.remove(entity);
	
	_entityManager.getTransaction().commit();
}

public Collection<Entity> findAll() {
	Query query = _entityManager.createQuery("from " + _class.getName());
	Collection<Entity> collection = query.getResultList();
	
	return collection;
}

public Entity findByPK(Object obj) {
	return (Entity) _entityManager.find(_class, obj);
}

}
[/code]

2 - Exemplo de classe-filha

[code]public class ProductDAO extends BaseDAO {

public ProductDAO() {
	super(Product.class);
}

}
[/code]
Espero que ajude.

Abraço.

Flávio

Opa :smiley:

Então, eu criei a classe:

public class Queries {
	
	/** Atributo responsável pela Sessão com o banco de dados
	 * @param sessionFactory
	 */
	private SessionFactory sessionFactory;

	/**
	 * Construtor da classe que seta uma sessão no sessionFactory
	 */
//criar logica que define ql classe será adicionada
	public Queries() {
		sessionFactory = new Configuration().addClass(GrupoProcedimentoBean.class).buildSessionFactory();
	}

	/**
	 * Método que recebe um objeto e salva o mesmo no banco
	 * @param bean
	 */
	public void inserir(Object bean) {
		Session session = sessionFactory.openSession();
		session.save(bean);
		session.flush();
		session.close();
	}
	
	/**
	 * Método que recebe um objeto e atualiza o mesmo no banco
	 * @param bean
	 */
	public void atualizar(Object bean) {
		Session session = sessionFactory.openSession();
		session.update(bean);
		session.flush();
		session.close();
	}
	
	
	/**
	 * Método que recebe um objeto e deleta o mesmo no banco
	 * @param bean
	 */
	public void deletar(Object bean) {
		Session session = sessionFactory.openSession();
		session.delete(bean);
		session.flush();
		session.close();
	}

}

Com a intenção de utilizar somente ela para se comunicar com o BD, mas ainda to com duvidas em métodos do tipo:

public List getLista()
public OrigemBean busca(Integer id)

Não consigo entender como o Hibernate vai me retornar uma lista com N objetos ou um objeto somente.

Alguém pode dar uma força ou postar um exemplo para que eu me vire aqui?

[]'s