Apostila de VRaptor, Hibernate e AJAX disponível

Sei que eu sou suspeito para falar (neh chefe Paulo :smiley: )

Mas ficou muito legal o material… Bem o q se eh preciso em boa parte dos projetos e de maneira simples, clara e indolor. - alguem ai ainda quer usar struts? :twisted: (brincadeira gente… calma, calma…)

[]'s

fera cara…gostei vou arrumar um tempo ctz para ler essa apostila e praticar…!!!

afinal eu começei em java pelas apostilas fj-11 e fj-21… e indico elas para toudmundu q deseja aprender javA!

flwww

sucesso!!

Olá,

alguém que esteja fazendo o tutorial e que conheça o framewok pode me responder por que ele me da este erro:

Quando tento chamar a página:

http://localhost:8080/loja/usuario.lista.logic

ele me da a seguinte mensagem de erro:


javax.servlet.ServletException: Unable to instantiate using public br.com.caelum.lojavirtual.logic.DaoInterceptor()
	org.vraptor.VRaptorServlet.service(VRaptorServlet.java:68)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Muito bom cara…
Excelente material.

Cabral,

Parece que seu DaoInterceptor não possui o construtor público e sem argumentos requerido para que seja possível instanciá-lo.

Sérgio

Olá Sérgio,

obrigado pela resposta.
Quando vou rodar a parte web ele me diz que esta faltando a classe

java.lang.NoClassDefFoundError: javax/persistence/Entity

só que meu projeto tem o javaee.jar e o meu tomcat é o 5.5.23.

De uma olhadinha nas libs do projeto. Não entendo por que não funcionou.

Se puder me ajudar agradeço.

Ricardo Cabral


que eu me lembre, o pacote javax.persistence está em uma dependência do hibernate, ejb-persistence.jar, algo mais ou menos assim

mas o prefixo javax não quer dizer extensão do pacote java? Se for isso mesmo acredito eu que faça parte dos pacotes da SUN não é???

Obrigado pela resposta.

Ricardo Cabral

Dependendo da versão do seu javaee.jar, ele pode não incluir as classes de javax.persistence.* (Java EE 5.0).

Melhor usar o ejb-persistence.jar, disponível nas dependências do hibernate-annotations (subdiretório “lib/”).

Olá, obrigado pela ajuda de todos, funcionou, mas pelo que eu percebi não sei se é pelo fato de ser o tomcat, com o javaee.jar não funciona tem que ser esse jar que vem do hibernate mesmo.

Obrigado.

Ricardo Cabral

Olá,

essa apostila é realmente muito interessante. Meus sinceros parabéns. No entanto queria aproveitar e fazer uma pergunta.

Por que vocês escolheram JQuery ao invés de Prototype ou Yahoo UI?

Até folhar este tutorial eu não conhecia o JQuery. Essa biblioteca realmente parece muito interessante pelo pouco que pesquisei na net. No entanto confesso: Estou curioso para saber o motivo pelo qual vocês escolheram o JQuery! :smiley:

Abraços!
Thiago

e ondi eu posso achar todass aqueles jars que o projeto da apostila pede?!??!

Consegui evangelizar o jquery lá pela Caelum! :smiley:

É uma ótima biblioteca, não tem motivo especial. Acho que as outras seriam igualmente suficientes, mas menos prazerosas. Um pouco de gosto pessoal.

Pessoalmente, me “apaixonei” pelo jquery por causa da filosofia: http://jquery.com/blog/2006/08/20/why-jquerys-philosophy-is-better/. Uma procura sobre “jquery vs prototype” no google dá uma idéia ainda maior.

Muito legal. Eu achei o JQuery bastante interessante. Parece que é bem tranquilo achar bons tutoriais sobre JQuery na net. E pelo pouco que vi os códigos feitos com JQuery ficam menores se comparado com os códigos feito com Prototype. A única coisa que acho estranho é que parece que esse framework ainda não faz parte do vocabulário dos desenvolvedores. Por exemplo: Neste artigo nem consideraram o JQuery na comparação entre frameworks ajax (http://www.infoq.com/news/2007/05/pick-ajax).
Rsrs… no último comentário o cara cobra: “E o JQuery?”

Outro exemplo é o Grails. Ele tem suporte ao Prototype, Dojo e ao Yahoo UI. No entanto sobre JQuery não tem nada exceto isso aqui --> http://grails.org/Contribute+a+Tag#ContributeaTag-jQuery

De qualquer maneira gostei do JQuery. Vou conhecê-lo melhor e se ele for mesmo tudo que parece evangelizo ele também nos projetos que eu trabalhar! :smiley:

Obrigado!
Thiago

Excelente…

Com certeza vou dar uma conferida…

Eu achei muito boa a apostila e agora que me inseri nesse mundo de Java Web, achei mais fácil de compreende-la. Mas gosto de AJAX com DOJO Toolkit. JQuery é bom, mas acho inferior ao Dojo.
É bom o pessoal fazer umas comparações, tem mais bibliotecas por ai. Em Java mesmo, me impressionei com o DWR, fantástica.
Mas gosto é gosto né.

Abração a todos

Acho que hoje os maiores frameworks Javascript são Prototype+Scriptaculous, YUI, Dojo e JQuery. (Talvez Mootools e Rico tbm).

A escolha pelo JQuery foi após fazer um comparativo entre esses todos e ver qual se adaptava melhor às nossas necessidades. O Fabio usava bastante JQuery e acabou “evangelizando” o resto do pessoal.

O JQuery é mais simples e poderoso que Prototype (o pioneiro, mas na minha opinião, com mais coisas “nojentas”). O YUI eu pessoalmente não gosto para o que precisamos nessa apostila; acho que o foco deles é mais em criar componentes ricos (tables ultra-magicas e etc).

Mas logico que poderia-se usar qualquer um desses no JSP sem alterar nada no Vraptor. (na versão 2.0 da apostila, vamos ver se mostramos inclusive a integracao com JSON)

Paulo,

Eu estou seguindo a apostila, estou na página 25. No tópico 4.4 Dao Genérico.

Criei as classes, tudo conforme a apostila manda fazer. Porem neste ponto (quando vou iniciar o passo 4.4) rodo o meu TesteUsuario.java e ele não está mais inserindo os registros no banco. Porém não dá nenhum erro. Vou coloca minha classe TesteUsuario para darem uma olhada.

Obrigado.

TesteUsuario.java

public class TesteUsuario {
	public static void main(String[] args) {
		Session session = HibernateUtil.getSession();
		// cria um usuario
		UsuarioDao dao = new DaoFactory().getUsuarioDao();
		Usuario u = new Usuario();
		u.setLogin("fsquadro");
		u.setSenha("guj");
		
		// abre transacao e insere
		Transaction t = session.beginTransaction();
		dao.adiciona(u);
		//session.save(u);
		t.commit();
		
		// Lista os usuarios
		List<Usuario> lista = dao.listaTudo();
		for (Usuario usuario : lista) {
			System.out.println(usuario.getLogin());
		}
		
		session.close();
	}

}

EDITADO: Adicionado os códigos abaixo.

Dao.java

package br.com.caelum.lojavirtual.dao;

import java.util.List;

import org.hibernate.Session;

public class Dao<T> {
	private final Session session;
	private final Class classe;
	
	public Dao(Session session, Class classe) {
		this.session = session;
		this.classe = classe;
	}
	
	public void adiciona(T u) {
		this.session.save(u);
	}
	
	public void remove (T u) {
		this.session.delete(u);
	}
	
	public void atualiza (T u) {
		this.session.merge(u);
	}
	
	public List<T> listaTudo() {
		return this.session.createCriteria(this.classe).list();
	} 
	
	public T procura(Long id) {
		return (T) session.load(this.classe, id);
	}
}

DaoFactory.java

package br.com.caelum.lojavirtual.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.caelum.lojavirtual.modelo.Usuario;
import br.com.caelum.lojavirtual.util.HibernateUtil;

public class DaoFactory {
	
	private final Session session;
	private Transaction transaction;
	
	public DaoFactory() {
		session = HibernateUtil.getSession();
	}
	
	public void beginTransaction() {
		this.transaction = this.session.beginTransaction();
	}
	
	public void commit() {
		this.transaction.commit();
		this.transaction = null;
	}
	
	public boolean hasTransaction() {
		return this.transaction != null;
	}
	
	public void rollback() {
		this.transaction.rollback();
		this.transaction = null;
	}
	
	public void close() {
		this.session.close();
	}
		
	public Dao getUsuarioDao() {
		return new Dao(this.session, Usuario.class);
	}

}

Oi Fernando,

Você está abrindo a transação em uma Session que não é a que a DaoFactory e o Dao estão usando.

Só para ter certeza, poste o código do seu HibernateUtil também.