UsuarioDao.java?

Colegas estou tentando fazer da maneira mais simples possível para entender toda a estrutura do Vraptor 3 :
fiz igual recomenda a documentação: http://vraptor.caelum.com.br/documentacao/componentes/
mesmo assim da um erro no meu UsuarioDao.java

segue todo código:

package br.com.caelum.vraptor.global.model;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;
import javax.persistence.GeneratedValue;

@Entity
@Component
@SessionScoped
public class Usuarios implements Serializable {

              @Id
              @NotNull
              @GeneratedValue
              private Long id;
              @NotNull
              @Length(min = 3, max = 20)
              private String login;
              @NotNull
              @Length(min = 6, max = 20)
              private String password;
              @NotNull
              @Length(min = 3, max = 100)
              private String nome;


get set....

package br.com.caelum.vraptor.global.dao;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.global.model.Usuarios;
import br.com.caelum.vraptor.ioc.Component;
import javax.jms.Session;

@Component
public class UsuariosDao {
    private final Session session;
    public UsuariosDao(Session session) {
    this.session = session;
    }
        @Post
        public void adiciona(Usuarios ususrios) {
        session.save(usuarios);                                 <***********************mostra erro aqui
    }

         
}

	



    

   
    



package br.com.caelum.vraptor.global.controller;
//import br.com.caelum.vraptor.Delete;
import java.util.ArrayList;
import java.util.List;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
//import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.global.dao.UsuariosDao;
import br.com.caelum.vraptor.global.interceptor.UsuariosInfo;
import br.com.caelum.vraptor.global.model.Usuarios;
import br.com.caelum.vraptor.view.Results;

@Resource
public class UsuariosController {

              private final UsuariosDao dao;                     // seta o dao
              private final Result result;
    

  public UsuariosController(UsuariosDao dao, Result result) {
		this.dao = dao;
		this.result = result;
		
	}
	@Path("/usuarios") //Lista usuarios
	@Get
	public void lista() {
          List<Usuarios> Usuarios = new ArrayList<Usuarios>();
          result.include("Usuarios", Usuarios);
    }
          
          @Path("/usuarios") //Adiciona usuarios
	@Post
          public void adiciona(Usuarios usuarios) {
          this.dao.adiciona(usuarios);
     }
 
          public void formulario() {
          // povoa campos
         }
}


import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

@Component
public class SessionCreator implements ComponentFactory<Session> {

    private final SessionFactory factory;
    private Session session;

    public SessionCreator(SessionFactory factory) {
        this.factory = factory;
    }

    @PostConstruct
    public void create() {
        this.session = factory.openSession();
    }

    public Session getInstance() {
        return session;
    }

    @PreDestroy
    public void destroy() {
        this.session.close();
    }

}

import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;



@ApplicationScoped
@Component
public class HibernateControl {

  private final SessionFactory factory;
  public HibernateControl() {
      this.factory = new AnnotationConfiguration().configure().buildSessionFactory();
  }

  public Session getSession() {
      return factory.openSession();
  }

}

Junior, quando você tem uma entidade JPA você não deve anotá-la como @Component. Component são apenas para componentes de infraestrutura. Para você entender, o que o Vraptor faz em relação ao HIbernate é apenas inicializar a factory, e apenas isso, nada mais. Quem gerencia suas entidades é o Hibernate, por isso você não precisa da anotação.

Sua classe HibernateControl é desnecessária, já que o Vraptor já possui um componente que faz isso para você. Dê uma olhada em http://vraptor.caelum.com.br/documentacao/componentes-utilitarios-opcionais/

PORÉM seu erro é na linha 14, onde você declara o atributo como Usuarios ususrios e usa como usuarios, ou seja, erro de sintaxe básica do Java. Você está usando uma IDE? Esses erros de compilação deveriam ser detectados pela IDE.

/home/junior/global/src/main/java/br/com/caelum/vraptor/global/dao/UsuariosDao.java:15: cannot find symbol symbol : variable usuarios location: class br.com.caelum.vraptor.global.dao.UsuariosDao session.save(usuarios);

Abraços

boa Noite Mano garcia-jj…
Estou usando a famigerada NETBEANS… cara vou mudar para Eclipse… foda que nunca tive paciência para instalar o tom cat… - risos-

Junior, tudo bem?

Eu particularmente gosto do Eclipse, porém o Netbeans é uma boa IDE. Você está tendo algum problema para usa-la? Por volta de 2001 eu usava muito o Sun One e ele indicava erros de compilação. Inclusive fazia o empacotamento do projeto e tudo mais.

Mas se você quer tentar Eclipse + Tomcat, basta você baixar o Tomcat e descompactar em algum local. Depois é só ir no Preferences > Servers e adicionar um servidor.

Abraços

Verdade… eu tenho que criar vergonha, e ter mais paciência, para usar o mydvs etc… na importação fica tudo doido as pastas… precisa ver !

tu já fez algum crud no vraptor3 ? que use mysql ou postgresql ?

Eclipse e totalmente diferente do netbeans !

ficaria como ?

a IDE aqui ta mais enrolada que eu ! risos !

Se você está usando Hibernate o fato de usar MySQL, PgSQL ou Oracle é irrelevante. Não deveria haver diferença entre os bancos, já que o Hibernate abstrai isso para você.

Já fiz uns CRUDs sim. Na verdade tenho uma aplicação bem grande que usa Vraptor3, que atualmente possui 350 controllers sendo alguns CRUDs e outros com operações de relatórios, etc… Também comecei ontem um outro projeto aqui na empresa que usa Vraptor3 acessando EJBs, sendo que a saída é via JSON, não há impressão de HTTML.

Mas não sei se isso irá te ajudar. Creio que o melhor que você pode fazer é tentar avaliar onde você tem dificuldade, se é entender a configuração inicial, a forma como o vraptor faz o processamento da requisição, ou os componentes de fabrica, respostas, etc… ou se tudo, hehehehe. Com base nisso podemos te ajudar melhor a montar sua aplicação.

Abraços

[quote=juniorsatanas][quote]
PORÉM seu erro é na linha 14, onde você declara o atributo como Usuarios ususrios e usa como usuarios, ou seja, erro de sintaxe básica do Java. Você está usando uma IDE? Esses erros de compilação deveriam ser detectados pela IDE.

[/quote]

ficaria como ?

a IDE aqui ta mais enrolada que eu ! risos ![/quote]

Note seu código atual

@Post public void adiciona(Usuarios ususrios) { session.save(usuarios); }

Onde o correto seria usuarios ao invés de ususrios, ou seja, há um erro de ortografia.

@Post public void adiciona(Usuarios usuarios) { session.save(usuarios); }

mesmo corrigindo não compila !

O erro está na linha de cima. Note que está escrito adiciona(Usuarios ususrios) onde o correto é adiciona(Usuarios usuarios)

garcia - DESCULPA - não vi mano… estou aqui desde as 7, estou indo para casa ! vou mudar de óculos tbm - risos- Obrigado cara te juro que não vir isso, olhei esse código de cago a rabo… e até cómico !

garcia O Eclipse corrige isso ? automaticamente ?