Jpa e hibernate

17 respostas
Felipe_Gustavo

oi gente, eu estou começando a aprender java,
estou muito enrrolado em usar persistência, tenho uma tarefa da disciplina, alguém me diga como criar um projeto no netbeans
da maneira abaixo , que as classes eu tento fazer, realmente acho complicado !

implementar usando JPA:
1- Criar uma consulta usando NamedQuery.
2- Criar uma consulta usando Criteria do JPA.
3- Criar e configurar uma camada Dao utilizando Hibernate, com as operações CRUD.
4- Implementar as mesmas consultas (1 e 2) utilizando Hibernate.
Todos os alunos deve enviar e apresentar os seus códigos.

17 Respostas

Felipe_Gustavo

observação: Não quero que ninguém faça minha tarefa, apenas me ajudem a fazê-la, me sinto perdido

Rodrigo_Sasaki

Te pediram essa tarefa e não te deram nenhuma base?
você ja criou uma entidade ou um DAO antes? tem um BD configurado aí ?

leonardoterrao

Da uma olhada no link abaixo, tem uns exemplos muito bons de JPA e ta bem fácil de entender.

http://uaihebert.com/?p=1137

Felipe_Gustavo

Obrigado Leonardo já estou olhando.

Digão rapaz o professor explica as coisas numa agilidade, ele não explica jpa apenas
manda a gente aprender, ele dá a grade da disciplina normal , persistência a gente deve aprender fora a parte
mas saber fazer.

Felipe_Gustavo

sim Digão e nessa tarefa a gente deve implementar um modelo qualquer de programa

Rodrigo_Sasaki

bom, se você tem o banco de dados configurado, o post do blog do jakefrog que o leonardo postou ali acima vai te dar todos os exemplos que você precisa.

Se encontrar alguma dificuldade pra implementar o DAO ou as Entidades, poste aqui.

você ja chegou a trabalhar com persistência usando JDBC?

Felipe_Gustavo

Consegui depois de muita luta, entendi !

Agora , na minha classe modelo eu tenho alguns Named Query definidos, a primeira questão é para mim criar um !
Eu acredito que eu precise utilizá-lo também.

Sugestões?

Desde já obrigado, os artigos que vocês me passaram clarearem minhas ideias.

Hebert_Coelho

Criar um oq? Não deu para entender.

Você viu no post lá em cima (muito boa a indicação do leonardoterrao :lol: :lol: :lol:) como cria e utilizar NamedQuery?

Basta declarar na classe e depois chamar via classe Query.

leonardoterrao

Felipe_Gustavo ai está um exemplo de com declarar e utilizar uma NamedQuery!

muito bom seu blog em jakefrog! ;D

Para declarar a NamedQuery

@Entity
@Table(name = "WEB_AMBIENTE")
@NamedQueries({
		@NamedQuery(name = "WebAmbiente.ConsultaCodigo", query = "SELECT wa FROM WebAmbiente wa where wa.cdAmbiente = :cdAmbiente") 
})
public class WebAmbiente implements Serializable {

....

e para utilizar

public List<WebAmbiente> carregarAmbiente(String cdAmbiente) {

	em.clear();
	em.getTransaction().begin();
	List<WebAmbienteDTO> webAmbientes = null;

	try {
                //                                                nome da NamedQuery que foi declarado        (nomeParametro, Valorparametro)                 
		webAmbientes = new ArrayList<WebAmbiente>(em.createNamedQuery("WebAmbiente.ConsultaCodigo").setParameter("cdAmbiente", cdAmbiente).getResultList());

		em.getTransaction().commit();
	} catch (Exception e) {
			em.getTransaction().rollback();
			e.printStackTrace();
	}

	return webAmbientes;
}
Felipe_Gustavo

Agora sim !!!
beleeeeeza !

Obrigado!

Felipe_Gustavo
leonardoterrao:
Felipe_Gustavo ai está um exemplo de com declarar e utilizar uma NamedQuery!

muito bom seu blog em jakefrog! ;D

Para declarar a NamedQuery

@Entity
@Table(name = "WEB_AMBIENTE")
@NamedQueries({
		@NamedQuery(name = "WebAmbiente.ConsultaCodigo", query = "SELECT wa FROM WebAmbiente wa where wa.cdAmbiente = :cdAmbiente") 
})
public class WebAmbiente implements Serializable {

....

e para utilizar

public List<WebAmbiente> carregarAmbiente(String cdAmbiente) {

	em.clear();
	em.getTransaction().begin();
	List<WebAmbienteDTO> webAmbientes = null;

	try {
                //                                                nome da NamedQuery que foi declarado        (nomeParametro, Valorparametro)                 
		webAmbientes = new ArrayList<WebAmbiente>(em.createNamedQuery("WebAmbiente.ConsultaCodigo").setParameter("cdAmbiente", cdAmbiente).getResultList());

		em.getTransaction().commit();
	} catch (Exception e) {
			em.getTransaction().rollback();
			e.printStackTrace();
	}

	return webAmbientes;
}

Leonardo no meu está dando errado, eu acredito que esse seu em = entity manager né?
porque o meu emf não está fazendo, diz que o o createNamedQuery não existe

leonardoterrao

Sim, este é meu "em" é meu EntityManager.

Eu tenho uma classe chamada AbstractDAO que cria uma unica conexão.
Para utilizar ela eu declaro o EntityManager na minha classe que vou utilizar e crio a conexão para ele.

EntityManager em = AbstractDAO.getEMF().createEntityManager();
Aqui está minha classe que fabrica as conexões se quiser utilizar é bem interessante!
public class AbstractDAO {

	private static final EntityManagerFactory EMF;
	static {
		try {
			EMF = Persistence.createEntityManagerFactory("AquivoDePersistencia");

		} catch (Throwable ex) {
			ex.printStackTrace();
			throw new ExceptionInInitializerError();
		}
	}
	public static EntityManagerFactory getEMF() {
		return EMF;
	}
}
Felipe_Gustavo

Veja:

// Meu método executor da NamedQuery categoria[u][/u][u] public List<Categoria> listar(){ List<Categoria> categorias = null; try { categorias = emf.createNamedQuery("Categoria.findAll").getResultList(); // ERRO no método emf.createNamedQuery } catch (Exception e) { } return categorias; }

Felipe_Gustavo

Ahh leonardo, agora saquei, minha classe de conexão não estava se comportando assim,
entendi como fazer, valeu

leonardoterrao

Que bom que com que conseguiu!

Vc tava tentando acessar o createNamedQuery direto do EntityManagerFactory.
Assim funcionaria:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("nomeSuaConexao");
EntityManager em = emf.createEntityManager();
                                        
public List<Categoria> listar(){  
     List<Categoria> categorias = null;  
     try {  
      categorias = em.createNamedQuery("Categoria.findAll").getResultList();
         } catch (Exception e) {  
     }  
     return  categorias;  
}
leonardoterrao

Que legal !

Da nota pra mim tbm to ajudando! :smiley:

Faz eles apresentar pra turma e explicar o fonte! HAHAHAHHA

thassiano

Olá Pessoal,

Creio que esse perfil seja um “fake”, pois essa tarefa passei para meus alunos semana passada! E essa pessoa da foto não conheço, e não existe esse nome de aluno matriculado na disciplina!

Que bom que meus alunos aprenderam a usar um fórum, se isso motiva-los a lerem mais! Ótimo!

E lembrando aos meus alunos, a última frase da tarefa: “Todos os alunos deve enviar e apresentar os seus códigos.”

Criado 31 de maio de 2012
Ultima resposta 1 de jun. de 2012
Respostas 17
Participantes 5