Erro na Configuração do hibernate

17 respostas
java
J

Olá Pessoal!

Estou começando a utilizar hibernate, e estou encontrando um problema, acho que é na configuração.
Segue abaixo o erro o console do netbeans mostra:
O elemento-raiz do documento “hibernate-mapping” deve corresponder à raiz de DOCTYPE “Hibernate-mapping”.

Alguém pode me ajudar!?

17 Respostas

J

Faltou postar o código desse arquivo.

D

Puxa, usando xml para configurar? Eu prefiro muito mais o properties. É mais divertido.

J

Estou utilizando o arquivo Fornecedor.hbm.xml está no mesmo pacote da classe modelo Fornecedor. Segue descrito abaixo o codigo do arquivo Fornecedor.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>

!DOCTYPE Hibernate-mapping PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

hibernate-mapping>

class name=br.com.jairo.modelo.Fornecedor table=fornecedores>

id name=forncodigo>

generator class=“native>

/id>

property name=fornnome>

property name=fornendereco>

property name=fornemail>

property name=fornbairro>

property name=forncidade>

property name=forncep>

property name=fornuf>

property name=fornfone>

property name=forncelular>

property name=forncpf>

property name=fornobs>

property name=fornrg>

property name=forndesde>

property name=forncnpj>

property name=forninscest>

property name=forncontato>

property name=fornauditoria>

/class>

/hibernate-mapping>
J

Olá javaflex!

Abaixo está o arquivo HibernateDAO:

import br.com.jairo.util.HibernateUtil;

import java.io.Serializable;

import java.util.List;

import org.hibernate.Session;

/**
*

  • @author Jairo
    */
    public class HibernateDAO implements InterfaceDAO{

    private Class classe;

    public HibernateDAO(Class classe){
    
    super();
    
    this.classe = classe;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public void salvar(T bean) {
    
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    
    session.beginTransaction();
    
    session.save(bean);
    
    session.getTransaction().commit();
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public void atualizar(T bean) {
    
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    
    session.beginTransaction();
    
    session.update(bean);
    
    session.getTransaction().commit();
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public void excluir(T bean) {
    
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    
    session.beginTransaction();
    
    session.delete(bean);
    
    session.getTransaction().commit();
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public T getBean(Serializable codigo) {
    
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    
    session.beginTransaction();
    
    T bean = (T)session.get(classe, codigo);
    
    session.getTransaction().commit();
    
    return bean;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public List getBeans() {
    
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    
    session.beginTransaction();
    
    List beans = (List)session.createCriteria(classe).list();
    
    session.getTransaction().commit();
    
    return beans;
    
    }
    
    }
    

Abaixo a classe Modelo Fornecedor:

import java.sql.Date;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.SequenceGenerator;

/**
*

  • @author Jairo
    
    */
    
    @Entity(name=fornecedores)
    
    public class Fornecedor {
    
    private Integer fornCodigo;
    
    private String fornNome;
    
    private String fornEndereco;
    
    private String fornEmail;
    
    private String fornBairro;
    
    private String fornCidade;
    
    private String fornCep;
    
    private String fornUf;
    
    private String fornFone;
    
    private String fornCelular;
    
    private String fornCpf;
    
    private String fornObs;
    
    private String fornRg;
    
    private Date fornDesde;
    
    private String fornCnpj;
    
    private String fornInscEst;
    
    private String fornContato;
    
    private String fornAuditoria;
    

    /**

    • @return the fornCodigo
      */
      @Id
      @GeneratedValue(generator=“forncodigo”)
      @SequenceGenerator(sequenceName=“fornecedores_forncodigo_seq”, name=“forncodigo”)
      public Integer getFornCodigo() {
      return fornCodigo;
      }

    /**

    • @param fornCodigo the fornCodigo to set
      */
      public void setFornCodigo(Integer fornCodigo) {
      this.fornCodigo = fornCodigo;
      }

    /**

    • @return the fornNome
      */
      public String getFornNome() {
      return fornNome;
      }

    /**

    • @param fornNome the fornNome to set
      */
      public void setFornNome(String fornNome) {
      this.fornNome = fornNome;
      }

    /**

    • @return the fornEndereco
      */
      public String getFornEndereco() {
      return fornEndereco;
      }

    /**

    • @param fornEndereco the fornEndereco to set
      */
      public void setFornEndereco(String fornEndereco) {
      this.fornEndereco = fornEndereco;
      }

    /**

    • @return the fornEmail
      */
      public String getFornEmail() {
      return fornEmail;
      }

    /**

    • @param fornEmail the fornEmail to set
      */
      public void setFornEmail(String fornEmail) {
      this.fornEmail = fornEmail;
      }

    /**

    • @return the fornBairro
      */
      public String getFornBairro() {
      return fornBairro;
      }

    /**

    • @param fornBairro the fornBairro to set
      */
      public void setFornBairro(String fornBairro) {
      this.fornBairro = fornBairro;
      }

    /**

    • @return the fornCidade
      */
      public String getFornCidade() {
      return fornCidade;
      }

    /**

    • @param fornCidade the fornCidade to set
      */
      public void setFornCidade(String fornCidade) {
      this.fornCidade = fornCidade;
      }

    /**

    • @return the fornCep
      */
      public String getFornCep() {
      return fornCep;
      }

    /**

    • @param fornCep the fornCep to set
      */
      public void setFornCep(String fornCep) {
      this.fornCep = fornCep;
      }

    /**

    • @return the fornUf
      */
      public String getFornUf() {
      return fornUf;
      }

    /**

    • @param fornUf the fornUf to set
      */
      public void setFornUf(String fornUf) {
      this.fornUf = fornUf;
      }

    /**

    • @return the fornFone
      */
      public String getFornFone() {
      return fornFone;
      }

    /**

    • @param fornFone the fornFone to set
      */
      public void setFornFone(String fornFone) {
      this.fornFone = fornFone;
      }

    /**

    • @return the fornCelular
      */
      public String getFornCelular() {
      return fornCelular;
      }

    /**

    • @param fornCelular the fornCelular to set
      */
      public void setFornCelular(String fornCelular) {
      this.fornCelular = fornCelular;
      }

    /**

    • @return the fornCpf
      */
      public String getFornCpf() {
      return fornCpf;
      }

    /**

    • @param fornCpf the fornCpf to set
      */
      public void setFornCpf(String fornCpf) {
      this.fornCpf = fornCpf;
      }

    /**

    • @return the fornObs
      */
      public String getFornObs() {
      return fornObs;
      }

    /**

    • @param fornObs the fornObs to set
      */
      public void setFornObs(String fornObs) {
      this.fornObs = fornObs;
      }

    /**

    • @return the fornRg
      */
      public String getFornRg() {
      return fornRg;
      }

    /**

    • @param fornRg the fornRg to set
      */
      public void setFornRg(String fornRg) {
      this.fornRg = fornRg;
      }

    /**

    • @return the fornDesde
      */
      public Date getFornDesde() {
      return fornDesde;
      }

    /**

    • @param fornDesde the fornDesde to set
      */
      public void setFornDesde(Date fornDesde) {
      this.fornDesde = fornDesde;
      }

    /**

    • @return the fornCnpj
      */
      public String getFornCnpj() {
      return fornCnpj;
      }

    /**

    • @param fornCnpj the fornCnpj to set
      */
      public void setFornCnpj(String fornCnpj) {
      this.fornCnpj = fornCnpj;
      }

    /**

    • @return the fornInscEst
      */
      public String getFornInscEst() {
      return fornInscEst;
      }

    /**

    • @param fornInscEst the fornInscEst to set
      */
      public void setFornInscEst(String fornInscEst) {
      this.fornInscEst = fornInscEst;
      }

    /**

    • @return the fornContato
      */
      public String getFornContato() {
      return fornContato;
      }

    /**

    • @param fornContato the fornContato to set
      */
      public void setFornContato(String fornContato) {
      this.fornContato = fornContato;
      }

    /**

    • @return the fornAuditoria
      */
      public String getFornAuditoria() {
      return fornAuditoria;
      }

    /**

    • @param fornAuditoria the fornAuditoria to set
      */
      public void setFornAuditoria(String fornAuditoria) {
      this.fornAuditoria = fornAuditoria;
      }
      }
      Baixo a arquivo hibernate.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>

!DOCTYPE Hibernate-mapping PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

hibernate-mapping>

class name=br.com.jairo.modelo.Fornecedor table=fornecedores>

id name=forncodigo>

generator class=“native>

/id>

property name=fornnome>

property name=fornendereco>

property name=fornemail>

property name=fornbairro>

property name=forncidade>

property name=forncep>

property name=fornuf>

property name=fornfone>

property name=forncelular>

property name=forncpf>

property name=fornobs>

property name=fornrg>

property name=forndesde>

property name=forncnpj>

property name=forninscest>

property name=forncontato>

property name=fornauditoria>

/class>

/hibernate-mapping>

Abaixo o Servlet:

import br.com.jairo.dao.HibernateDAO;

import br.com.jairo.modelo.Fornecedor;

import br.com.jairo.util.HibernateUtil;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.hibernate.Session;

/**
*

  • @author Jairo
    */
    public class HibernateTeste extends HttpServlet {

    /**

    • Processes requests for both HTTP GET and POST
    • methods.
    • @param request servlet request
    • @param response servlet response
    • @throws ServletException if a servlet-specific error occurs
    • @throws IOException if an I/O error occurs
      */
      public HibernateTeste(){
      super();
      HibernateDAO fornecedorDAO = new HibernateDAO(Fornecedor.class);
      Fornecedor fornecedor = new Fornecedor();
      fornecedor.setFornNome(“Hibernate Teste”);
      fornecedor.setFornAuditoria(“testando servlet”);
      fornecedorDAO.salvar(fornecedor);
      }

    //
    /**

    • Handles the HTTP GET method.
    • @param request servlet request
    • @param response servlet response
    • @throws ServletException if a servlet-specific error occurs
    • @throws IOException if an I/O error occurs
      */
      @Override
      protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    }

    /**

    • Handles the HTTP POST method.
    • @param request servlet request
    • @param response servlet response
    • @throws ServletException if a servlet-specific error occurs
    • @throws IOException if an I/O error occurs
      */
      @Override
      protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    }

    /**

    • Returns a short description of the servlet.
    • @return a String containing servlet description
      */
      @Override
      public String getServletInfo() {
      return “Short description”;
      }//

}

J

O código ficou todo zoado, cortando até o início das tags. Usa a opção de formatacao.

J

Olá javaflex!

Eu tirei as tags para que o codigo do arquivo fosse visualizado, se eu colocar as tags vocês não iriam visualizar o conteudo do arquivo!!

J

Então posta em arquivo e posta o link. Arruma algum jeito pra te ajudarem, pois dificulta validar algo quebrado.

J

Olá javaflex!
Fornecedor.hbm.xml (1,3 KB)

Abaixo está o servlet:
package br.com.jairo.controle;

import br.com.jairo.dao.HibernateDAO;

import br.com.jairo.modelo.Fornecedor;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**
*

  • @author Jairo
    
    */
    
    public class HibernateTeste extends HttpServlet {
    
    static final long serialVersionUID = 1L;
    

    /**

    • Processes requests for both HTTP GET and POST
    • methods.
    • @param request servlet request
    • @param response servlet response
    • @throws ServletException if a servlet-specific error occurs
    • @throws IOException if an I/O error occurs
      */
      public HibernateTeste(){
      super();
      HibernateDAO fornecedorDAO = new HibernateDAO(Fornecedor.class);
      Fornecedor fornecedor = new Fornecedor();
      fornecedor.setFornNome(“Hibernate Teste”);
      fornecedor.setFornAuditoria(“Testando servlet”);
      fornecedorDAO.salvar(fornecedor);
      }

    //
    /**

    • Handles the HTTP GET method.
    • @param request servlet request
    • @param response servlet response
    • @throws ServletException if a servlet-specific error occurs
    • @throws IOException if an I/O error occurs
      */
      @Override
      protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    }

    /**

    • Handles the HTTP POST method.
    • @param request servlet request
    • @param response servlet response
    • @throws ServletException if a servlet-specific error occurs
    • @throws IOException if an I/O error occurs
      */
      @Override
      protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    }

    /**

    • Returns a short description of the servlet.
    • @return a String containing servlet description
      */
      @Override
      public String getServletInfo() {
      return “Short description”;
      }//

}

J

Olá javaflex!

Exclui o servlet e criei outro com o codigo modificado descrito abaixo:

public class HibernateTeste extends HttpServlet {

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    HibernateDAO<Fornecedor> fornecedorDAO = new HibernateDAO<Fornecedor>(Fornecedor.class);
    Fornecedor fornecedor = new Fornecedor();
    fornecedor.setFornNome("Hibernate Teste");
    fornecedor.setFornAuditoria("Testando servlet");
    fornecedorDAO.salvar(fornecedor);
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
 * Handles the HTTP <code>GET</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

/**
 * Handles the HTTP <code>POST</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

/**
 * Returns a short description of the servlet.
 *
 * @return a String containing servlet description
 */
@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>

}

o erro anterior desapareceu mais surgiu novos erros no log do netbeans.
24-May-2018 19:41:09.422 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/JavaWebII

OBS.: O LOG ACIMA INFORMA ERRO EM OUTRO PROJETO, MAS RODEI O PROJETO JavaWebII e FUNCIONOU NORMALMENTE.

Não grava nenhuma informação no BD e nem mostra no log do netbeans o codigo sql que peço para ser mostrado no log conforme o esta na classe HibernateUtil:

configuration.setProperty("hibernate.show_sql", "true");
    configuration.setProperty("hibernate.format_sql", "true");
J

Hibernate não é otimizado para dados online, então após o save, update ou delete voce deve chamar session.flush() para o hibernate gerar o SQL e enviar para o banco.

J

Não funcionou!!!

J

Pelo menos o SQL foi gerado no output?

J

Não e nem gravou no BD!!

J

Sem dar erro e sem log de nada fica difícil. O que está seguindo pra estudar Hibernate? Melhor trocar de material.

J

E em Java a maioria que usa Hibernate atualmente segue JPA. Entao procure tutorial que siga JPA e não dessa forma que está fazendo pra não ficar na minoria.

J

T2Ti

J

Vou verificar uma apostila que tenho da caelum sobre hibernate e JPA

Criado 23 de maio de 2018
Ultima resposta 26 de mai. de 2018
Respostas 17
Participantes 3