Ir ao conteúdo
  • Cadastre-se

Doctore

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

Reputação

3
  1. Bom, depois de alguns dias pesquisando eu descobri que era bem mais simples do que eu pensava. Eu só estava procurando no lugar errado. Usei uma api chamada jxl e criei uma outra classe pra testar. Segue o código pra quem precisar depois. É necessário usar um arquivo .xls(excel 97-2003). Colunas do excel = (ID, NOME, INSCRICAO) DAO public void importa(Candidato c) { try { sessao = HibernateUtil.getSessionFactory().openSession(); trans = sessao.beginTransaction(); Workbook workbook = Workbook.getWorkbook(new File("C:\\Users\\junio\\Desktop\\scrum\\candidatos.xls")); Sheet sheet = workbook.getSheet(0); int linhas = sheet.getRows(); sheet.getRow(1); for (int i = 1; i < linhas; i++) { Cell ID = sheet.getCell(0, i); Cell NOME = sheet.getCell(1, i); Cell INSCRICAO = sheet.getCell(2, i); Candidato candidato = new Candidato(); candidato.setId(Integer.parseInt(ID.getContents())); candidato.setNome(NOME.getContents()); candidato.setInscricao(INSCRICAO.getContents()); sessao.save(candidato); } } catch (Exception e) { e.printStackTrace(); } finally { trans.commit(); sessao.close(); } } Bean public void importar() { try { candidatoDao.importa(candidato); FacesMessage message = new FacesMessage("Sucesso!"); FacesContext.getCurrentInstance().addMessage(null, message); } catch (Exception e) { FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", null); FacesContext.getCurrentInstance().addMessage(null, message); } } Entidade public class Candidato implements Serializable{ @Id @Column(name="candidato_id") private Integer id; @Column(name="candidato_nome") private String nome; @Column(name="candidato_inscricao") private String inscricao; //getters and setters }
  2. Estou fazendo uma aplicação web para o meu TCC e preciso implementar a funcionalidade de importar uma lista de alunos pro meu banco. Sinceramente eu não faço a menor ideia de como fazer isso, o que eu sei de java é o que eu aprendi na faculdade e não é lá grande coisa e o pouco que eu encontrei sobre isso no google não ajudou em nada. O "alunos.xlsx" tem 3 colunas: id, nome e matrícula. Não sei se importa, mas o servidor é o glassfish 4.1.1. Segue o código para que vejam a maneira que estou fazendo os cruds. Não sei nem por onde começar, então qualquer dica é bem vinda :v package com.alpha.entity; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="aluno") public class Aluno implements Serializable{ @Id @Column(name="aluno_id") private Integer id; @Column(name="aluno_nome") private String nome; @Column(name="aluno_matricula") private String matricula; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getMatricula() { return matricula; } public void setMatricula(String matricula) { this.matricula = matricula; } } DAO: package com.alpha.dao; import com.alpha.entity.Aluno; import com.alpha.util.HibernateUtil; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.Transaction; public class AlunoDao { private Session sessao; private Transaction trans; private List<Aluno> list; public List<Aluno> getList() { sessao = HibernateUtil.getSessionFactory().openSession(); trans = sessao.beginTransaction(); Criteria cri = sessao.createCriteria(Aluno.class); this.list = cri.list(); sessao.close(); return list; } public void addAluno(Aluno a) { try { sessao = HibernateUtil.getSessionFactory().openSession(); trans = sessao.beginTransaction(); Aluno aluno = new Aluno(); aluno.setId(a.getId()); aluno.setNome(a.getNome()); aluno.setMatricula(a.getMatricula()); sessao.save(aluno); trans.commit(); } catch (Exception e) { e.printStackTrace(); } finally { sessao.close(); } } public void editAluno(Aluno a) { try { sessao = HibernateUtil.getSessionFactory().openSession(); trans = sessao.beginTransaction(); sessao.update(a); trans.commit(); } catch (Exception e) { e.printStackTrace(); } finally { sessao.close(); } } public void removeAluno(Aluno a) { try { sessao = HibernateUtil.getSessionFactory().openSession(); trans = sessao.beginTransaction(); sessao.delete(a); trans.commit(); } catch (Exception e) { e.printStackTrace(); } finally { sessao.close(); } } } Bean: package com.alpha.bean; import com.alpha.dao.AlunoDao; import com.alpha.entity.Aluno; import javax.inject.Named; import javax.enterprise.context.SessionScoped; import java.io.Serializable; import java.util.List; @Named(value = "alunoBean") @SessionScoped public class AlunoBean implements Serializable { private Aluno aluno = new Aluno(); private AlunoDao alunoDao = new AlunoDao(); private List<Aluno> alunos; public AlunoBean() { } public List listarAlunos() { alunos = alunoDao.getList(); return this.alunos; } public void adicionarAluno() { alunoDao.addAluno(aluno); aluno = new Aluno(); } public void removerAluno(Aluno a) { aluno = a; alunoDao.removeAluno(aluno); aluno = new Aluno(); } public Aluno getAluno() { return aluno; } public void setAluno(Aluno aluno) { this.aluno = aluno; } public AlunoDao getAlunoDao() { return alunoDao; } public void setAlunoDao(AlunoDao alunoDao) { this.alunoDao = alunoDao; } public List<Aluno> getAlunos() { return alunos; } public void setAlunos(List<Aluno> alunos) { this.alunos = alunos; } } xhtml: <h:form id="dtAlunos"> <p:dataTable var="listaDeAlunos" value="#{alunoBean.listarAlunos()}"> <p:column headerText="Id"> <h:outputText value="#{listaDeAlunos.id}" /> </p:column> <p:column headerText="Aluno"> <h:outputText value="#{listaDeAlunos.nome}" /> </p:column> <p:column headerText="Matrícula"> <h:outputText value="#{listaDeAlunos.matricula}" /> </p:column> <p:column headerText="Ações"> <p:commandButton icon="fa fa-trash" styleClass="btn-danger" action="#{alunoBean.removerAluno(listaDeAlunos)}" update=":dtAlunos"/> </p:column> </p:dataTable> </h:form> <h:form id="formCadastrarAluno"> <p:panelGrid columns="1" style="width: 100%; border: none" styleClass="no-border" layout="grid"> <p:outputLabel value="Id"/> <p:inputText value="#{alunoBean.aluno.id}" style="width: 100%" /> <p:outputLabel value="Aluno"/> <p:inputText value="#{alunoBean.aluno.nome}" style="width: 100%" /> <p:outputLabel value="Matrícula"/> <p:inputText value="#{alunoBean.aluno.matricula}" style="width: 100%" /> <p:separator/> <p:row> <p:commandButton style="font-size: x-large" value="Cancelar" styleClass="btn-material pull-left" update=":formCadastrarAluno" /> <p:commandButton style="font-size: x-large" styleClass="btn-primary btn-material pull-right" value="Cadastrar" action="#{alunoBean.adicionarAluno()}" update=":formCadastrarAluno :dtAlunos" /> </p:row> </p:panelGrid> </h:form>
  3. @psykotico acho que acabei entendendo mais rápido depois de virar 3 noites procurando uma solução pra isso.. kkk de qualquer forma, ainda não sei recuperar o valor de um input que não seja uma variável de uma classe mapeada. Não posso setar o id de uma pessoa como objeto pessoa da classe Telefone porque são tipos diferentes. Você sabe como eu deveria modificar o addTelefone() pra que ele busque o objeto 'pessoa' no banco e atualize "ao mesmo tempo" que salva o telefone?
  4. @jonathan ferreira dos sant Procure sobre métricas de software: Análise de Pontos de Função.
  5. @psykotico Sim, mas eu coloquei isso no form só pra facilitar a visualização. Por isso estão como outputText. Eu só uso o que está no input mesmo. Eu pensei em colocar num inputHidden pra recuperar o id. Mas acho que seria mais gambiarra do que o que eu fiz. o f:setPropertyActionListener já manda o objeto pro telefoneBean.pessoa, eu consigo resgata-lo no meu objeto 'Telefone t' usando t.getPessoa. Então não é necessário pegar esse id, a menos que eu precise dele pra buscar pessoa no banco e atualizar. É isso?
  6. Obrigado pela resposta. Cara, eu entendi a parte que eu devo colocar um addTelefone no objeto Pessoa, mas não entendi muito bem como essa pessoa seria resgatada dessa forma. Fuçando um pouco no google eu consegui uma forma de resolver esse problema da fk. Eu deveria ter colocado as páginas xhtml e o bean pra ficar mais claro.. erro meu. Aqui está o form que cadastra as pessoas. Eu adicionei no nome o <f:setPropertyActionListener pra enviar o objeto pessoa pro meu telefoneBean. (Não sei se isso é uma boa prática, mas funcionou) <h:form> Cadastro de Pessoas<br/> <h:panelGrid columns="2"> Nome: <h:inputText id="nomeTxt" value="#{pessoaBean.pessoa.nome}"/> <h:inputHidden/> <h:commandButton value="Cadastrar" action="#{pessoaBean.adicionarPessoa}"/> </h:panelGrid><br/> Pessoas Cadastradas<br/> <h:dataTable value="#{pessoaBean.listarPessoas()}" var="listaDePessoas" border="1"> <h:column> <f:facet name="header"> Id </f:facet> <h:outputText value="#{listaDePessoas.id}"/> </h:column> <h:column> <f:facet name="header"> Nome </f:facet> <h:commandLink value="#{listaDePessoas.nome}" action="#{pessoaBean.carregarPessoa(listaDePessoas)}"> <f:setPropertyActionListener target="#{telefoneBean.telefone.pessoa}" value="#{listaDePessoas}"/> </h:commandLink> </h:column> <h:column> <f:facet name="header"> Ações </f:facet> <h:commandLink value="Excluir" action="#{pessoaBean.removerPessoa(listaDePessoas)}"/> </h:column> </h:dataTable> </h:form> Eu criei essa lista usando Criteria no PessoaDao e recebo a lista no PessoaBean. Clicando ali numa pessoa venho pra essa página: <h:form> <h:panelGrid columns="2"> Id: <h:outputText value="#{pessoaBean.pessoa.id}"/> Nome: <h:outputText value="#{pessoaBean.pessoa.nome}"/> </h:panelGrid> Cadastro de Telefones<br/> <h:panelGrid columns="2"> Telefone: <h:inputText id="telefoneTxt" value="#{telefoneBean.telefone.telefone}"/> <h:inputHidden/> <h:commandButton value="Cadastrar" action="#{telefoneBean.adicionarTelefone()}"/> </h:panelGrid><br/> </h:form> Cadastrando o telefone aí ele fica com a foreign key correta. O problema agora é que eu preciso atualizar o objeto Pessoa adicionando esse telefone na lista. Nessa sua sugestão, eu não precisaria fazer um sessao.update(pessoa); ? Se eu faço isso, ele me diz que eu preciso de outra sessão. O Dao ficou assim public void addTelefone(Telefone t) { try { sessao = HibernateUtil.getSessionFactory().openSession(); transacao = sessao.beginTransaction(); Telefone telefone = new Telefone(); telefone.setId(t.getId()); telefone.setTelefone(t.getTelefone()); telefone.setPessoa(t.getPessoa()); sessao.save(telefone); transacao.commit(); } catch (Exception e) { e.printStackTrace(); } finally { sessao.close(); } } Método no TelefoneBean (Os beans estão como @SessionScoped não sei se isso interfere em algo) public String adicionarTelefone() { telefoneDao.addTelefone(telefone); return "index"; } Uma coisa que eu notei é que no meu banco, na tabela Pessoa, não existe a coluna dos telefones. Não deveria aparecer essa coluna ao criar uma pessoa nem que fosse como null?
  7. @Elian Becali Tentou apagar aquele null antes do nome na linha 27? Se mesmo assim não aparecer o nome que você digitou, verifique se o nome da variável está correto no input.
  8. Sou iniciante em java e estou com um problema aqui que eu sei que deve ser coisa besta, mas meu cérebro está bloqueado. Estou fazendo um crud simples com 2 classes com o relacionamento OneToMany: Pessoa 1:n Telefone. Tenho uma página com o form de cadastro de pessoas e abaixo do form tenho uma dataTable que lista as pessoas cadastradas(Usei o criteria pra buscar os dados no banco e armazenar numa List). Clicando em uma das pessoas eu entro em outra página com um formulário para cadastrar telefones dessa pessoa. Esse formulário está cadastrando os telefones no banco, só que a coluna pessoa_id, que é a foreign key sempre fica como null. Como posso fazer o Hibernate enxergar PK de Escolas e cadastra-la como FK na tabela Provas? Tentei um milhão de formas e sempre dá errado. As informações que encontrei na internet a respeito só me deixaram mais confuso porque o pessoal sempre usa uma aplicação java comum e faz o teste inserindo o id manualmente ao criar o objeto. Eu preciso da lógica pra que tudo seja feito a partir de um formulário. Desde já obrigado =) Classe Pessoa: @Entity public class Pessoa implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String nome; @OneToMany(mappedBy = "pessoa", targetEntity = Telefone.class, cascade = CascadeType.ALL) private List<Telefone> telefones; ... Classe Telefone: @Entity public class Telefone implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String telefone; @ManyToOne @JoinColumn(name = "pessoa_id") private Pessoa pessoa; ... Dao Telefone public void addTelefone(Telefone t) { try { sessao = HibernateUtil.getSessionFactory().openSession(); transacao = sessao.beginTransaction(); Pessoa pessoas = new Pessoa(); Telefone telefone = new Telefone(); telefone.setId(t.getId()); telefone.setTelefone(t.getTelefone()); telefone.setPessoa(t.getPessoa()); sessao.save(telefone); transacao.commit(); } catch (Exception e) { e.printStackTrace(); } finally { sessao.close(); } }
  9. é...o meu medo é desse remendo derreter a fita ou pegar fogo. Vou comprar um novo mesmo que é mais prático e seguro. Obrigado pelas respostas.
  10. Boa tarde. Meu problema é o seguinte.. Abri meu gabinete pra dar uma organizada melhor nos cabos da fonte e num vacilo meu, acabo puxando de forma errada o conector do cooler frontal do gabinete. O resultado foi o da foto anexada. O fio do conector da fonte se soltou do conector da placa-mãe. Testei pra ver se o conector menor funcionava, mas de jeito nenhum deu certo. Esse cooler estava conectado direto na fonte (não tem mais espaço na placa-mãe). Pensei que talvez desse pra fazer uma daquelas gambiarras descascando o fio e encapando com fita isolante... mas estou com medo de rolar um curto e ***** meu pc todo. Um cooler novo desses é baratinho (uns 20~30 reais)... então existe uma maneira fácil e sem risco de curtos pra um LEIGO como eu consertar isso ou é melhor comprar logo um outro cooler?
  11. Pode me indicar a melhor por até 500? o que acha da MB Gigabyte Intel GA-H97M-GAMING 3 1150?
  12. Obrigado, essa é a placa que vai me dar o melhor desempenho com a r9 até R$500 ou é apenas o 'suficiente' ?
  13. O processador eu ainda não decidi. Mas se for intel eu quero pelo menos um i5 dos mais simples. AMD eu não faço ideia, mas qualquer um que seja algo perto do i3 ou i5 '-'
  14. Olá, gostaria de saber qual a melhor placa mãe para a placa de vídeo r9 270 2GB. Até R$500,00 Dicas para Intel e/ou AMD. Obrigado.
  15. Obrigado pela resposta. Essa placa mãe aguenta bem a r9?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!