JPA - Hibernate

10 respostas
M

Ola.

Estou fazendo uma aplicação desktop com JPA e Hibernate. Inicialmente um pequeno projeto com as operações CRUD. Bom, consigo Inserir, Consultar e Remover, porém, quando trata-se de alteração (atualização de dados) não estou tendo sucesso. Usei persist, merge … mas nada. Alguem teria alguma sugestão?
Atenciosamente.
Marcos.

10 Respostas

Eduardo_Bregaida

mpisching:
Ola.

Estou fazendo uma aplicação desktop com JPA e Hibernate. Inicialmente um pequeno projeto com as operações CRUD. Bom, consigo Inserir, Consultar e Remover, porém, quando trata-se de alteração (atualização de dados) não estou tendo sucesso. Usei persist, merge … mas nada. Alguem teria alguma sugestão?
Atenciosamente.
Marcos.

Tenta algo assim:

public void salvarFornecedor() {
		Session session = HibernateUtil.getCurrentSession();
		DAO<Fornecedor> dao = new DAO<Fornecedor>(session, Fornecedor.class);
		if(fornecedor.getId()==null){
		dao.salveOrUpdate(this.fornecedor);
		}else{
			session.merge(this.fornecedor);
		}
		this.fornecedor = new Fornecedor();

	}




No DAO
@SuppressWarnings("unchecked")
	public void salveOrUpdate(T t) {
		session.saveOrUpdate(t);
	}

:smiley:

M

Beleza. Deu certo.

Valeu.

Eduardo_Bregaida

mpisching:
Beleza. Deu certo.

Valeu.

Blz, []s :smiley:

AugustoCSS

pode me ajudar me dando um exemplo de um DAO usando a JPA? estou acostumado com o JDBC puro e me enrolando pra migrar pra nova estrutura…

valew!

Eduardo_Bregaida
AugustoCSS:
pode me ajudar me dando um exemplo de um DAO usando a JPA? estou acostumado com o JDBC puro e me enrolando pra migrar pra nova estrutura..

valew!

Opa, um exemplo simples aí de DAO generico :D
[]

public class DAO<T> {
	// T = Type ou seja tipo
	private Session session;

	private Logger logger = Logger.getLogger(DAO.class);

	// criado p/ pegar a classe q vai no ©todo load e generics q nao permite
	// chamar atributos e metodos
	private Class classe;

	public DAO(Session session, Class classe) {
		this.session = session;
		this.classe = classe;
	}

	
	@SuppressWarnings("unchecked")
	public void save(T t) {
		logger.info("salvando " + t);
		session.save(t);
	}
	
	@SuppressWarnings("unchecked")
	public T load(Long id) {
		logger.info("lendo " + classe + " id: "+id);
		return (T) session.load(classe, id);
	}

	@SuppressWarnings("unchecked")
	public void salveOrUpdate(T t) {
		session.saveOrUpdate(t);
	}
	
	public void deleta(T t) {
		logger.info("deletando " + t);
		session.delete(t);
	}
	
	@SuppressWarnings("unchecked")
	public List<T> list() {
		// Critéria API
		Criteria criteria = getSession().createCriteria(classe);
		return criteria.list();
	}
	
//	 Criado p/ as outras classes conseguirem ver
	public Session getSession() {
		return session;
	}

	public void setSession(Session session) {
		this.session = session;
	}
	
	
	
	public List<String> buscaNomeFornecedor(String buscaNomeFornecedor){
		Criteria criteria = session.createCriteria(Fornecedor.class);
		criteria.add(Restrictions.ilike("nome", buscaNomeFornecedor + "%"));
		criteria.addOrder(Order.asc("nome"));
		criteria.setProjection(Projections.property("nome"));
		return criteria.list();
		
		
	}
}

:D

Eduardo_Bregaida

Valeu, aprendi na Caelum :smiley:

Eduardo_Bregaida

Victor Maehira:
Imagino que vc deve ter feito o “web avançado”, não?! Gostou do curso? Qual sua opinião? O Guilherme que deu o curso?!
Eu fiz o primeiro módulo e curti!!
Valeu!

Sim o FJ26, adorei o curso excelente, recomento quem já sabe Java Web a fazer pq aprende mta coisa q se utiliza em agilidade de desenvolvimento, quem deu o curso foi o Sérgio Lopes, vale mto a pena desse INVESTIMENTO na carreira :smiley:

bobboyms

Acho que pode te ajudar http://code.google.com/p/jpa-component/wiki/Doc_PT_Br

Victor_Yuji_Maehira

Cara… ficou muuuito legal esse DAO genérico! Nunca tinha pensado nisso! Parabéns!

Victor_Yuji_Maehira

Imagino que vc deve ter feito o “web avançado”, não?! Gostou do curso? Qual sua opinião? O Guilherme que deu o curso?!
Eu fiz o primeiro módulo e curti!!
Valeu!

Criado 29 de março de 2007
Ultima resposta 26 de abr. de 2007
Respostas 10
Participantes 5