Olá gelara do fórum, sou comecei a pouco tempo a usar o Hibernate
e estou com uma dúvida…
Quero saber como pesquisar um determinado objeto no banco
e NÂO inserir caso já o mesmo não exista. No aplicação antiga
(com SQL dentro do código) ficava assim:
//ESSE CÓDIGO É PARA MOSTRAR APENAS UMA IDÉIA DO QUE EU QUERO AlunonovoAluno=newAluno();novoAluno.setNome("Joãozinho");novoAluno.setMatricula(23625);Stringsql="Select * from aluno where matricula = ?";stmt.setLong(Long.parseLong(novoAluno.getMatricula()));PreparedStatementstmt=con.prepareStatement();ResultSetrs=stmt.executeQuery(sql);if(!rs.next){//Lógica para cadastro do Aluno }else{System.out.println("Não é possível cadastrar! Já existe um Aluno com a mesma MATRÍCULA!!!")}//OU SEJA, PRIMEIRO EU FAZIA UMA BUSCA NO BANCO, CASO NÃO EXISTISSE UM ALUNO COM AQUELA MATRICULA //O CADASTRO ERA EFETUADO, CASO CONTRÁRIO INFORMAVA AO USUÁRIO QUE JÁ EXISTIA UM ALUNO COM AQUELA MÁTRICULA
Minha pergunta é, eu JÁ SEI SALVAR O OBJETO NO BANCO COM O HIBERNATE, mas como fazer uma busca
(como mostrada acima) e salvar APENAS se o obejeto ainda não existir???
Olá gelara do fórum, sou comecei a pouco tempo a usar o Hibernate
e estou com uma dúvida…
Quero saber como pesquisar um determinado objeto no banco
e NÂO inserir caso já o mesmo não exista. No aplicação antiga
(com SQL dentro do código) ficava assim:
//ESSE CÓDIGO É PARA MOSTRAR APENAS UMA IDÉIA DO QUE EU QUERO AlunonovoAluno=newAluno();novoAluno.setNome("Joãozinho");novoAluno.setMatricula(23625);Stringsql="Select * from aluno where matricula = ?";stmt.setLong(Long.parseLong(novoAluno.getMatricula()));PreparedStatementstmt=con.prepareStatement();ResultSetrs=stmt.executeQuery(sql);if(!rs.next){//Lógica para cadastro do Aluno }else{System.out.println("Não é possível cadastrar! Já existe um Aluno com a mesma MATRÍCULA!!!")}//OU SEJA, PRIMEIRO EU FAZIA UMA BUSCA NO BANCO, CASO NÃO EXISTISSE UM ALUNO COM AQUELA MATRICULA //O CADASTRO ERA EFETUADO, CASO CONTRÁRIO INFORMAVA AO USUÁRIO QUE JÁ EXISTIA UM ALUNO COM AQUELA MÁTRICULA
Minha pergunta é, eu JÁ SEI SALVAR O OBJETO NO BANCO COM O HIBERNATE, mas como fazer uma busca
(como mostrada acima) e salvar APENAS se o obejeto ainda não existir???
Agradeço desde já!!!
Amigo, vou tentar lhe ajudar.
Presumindo que você já tenha um DAO (específico ou genérico) e que neste haja um método de procura como no exemplo abaixo, basta então verificar o retorno se for igual a nulo, caso contrário a mensagem deverá ser apresentada.
// Você poderá receber o objeto aluno injetado pelo vRaptor, mas no código abaixo esta sendo informado como Hardcod.Alunoaluno=newAluno();aluno.setNome("Joãozinho");aluno.setMatricula(23625);aluno.set...(...);if(this.daoFactory.getAlunoDao().localizar(aluno,"matricula")==null){...// Iniciar uma transação com o banco...this.daoFactory.getAlunoDao().adiciona(aluno);......// Finalizar uma transação com o banco}else{...System.out.println("Não é possível cadastrar! Já existe um Aluno com a mesma MATRÍCULA!!!")...}
Espero ter ajudado a tomar uma decisão.
Boa sorte.
vinicius.martinez
Na verdade…se no seu banco de dados voce tentar inserir um aluno com a matrícula já existente (supondo que voce tenha a matrícula como PK ou com unique index) , o banco irá retornar uma exception…
Ai voce trata da forma que voce quiser
Lavieri
Com hibernate ?? já sabe pegar uma session ?? se souber.... fica simples.... pode ser feito assim