Opa
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
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