Erro: Could not parse configuration: hibernate.cfg.xml

Pessoal,

Estou desenvolvendo uma aplicação Java Web utilizando o Hibernate para persistir os dados no MySQL. No momento de realizar o teste da conexão com o hibernate pela class main, é exibido o seguinte erro no console:

Arquivo hibernate.cfg.xml

?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <mapping class="br.com.geovane.controle.Pessoa" />
        <mapping class="br.com.geovane.controle.PF" />
        <mapping class="br.com.geovane.controle.PJ" />

        <mapping class="br.com.geovane.controle.DocReceita" />
        <mapping class="br.com.geovane.controle.CPF" />
        <mapping class="br.com.geovane.controle.CNPJ" />

        <mapping class="br.com.geovane.controle.Telefone" />
        <mapping class="br.com.geovane.controle.Endereco" />

        <mapping class="br.com.geovane.controle.Animal" />
        <mapping class="br.com.geovane.controle.Cachorro" />
        <mapping class="br.com.geovane.controle.Gato" />

        <mapping class="br.com.geovane.controle.Servico" />
        <mapping class="br.com.geovane.controle.Banho" />
        <mapping class="br.com.geovane.controle.Consulta" />
        <mapping class="br.com.geovane.controle.Tosa" />
        <mapping class="br.com.geovane.controle.Vacina" />


        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/estimacao</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password"></property>

        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.pool_size">10</property>
        <property name="hibernate.hbm2dll.auto">create</property>

    </session-factory>
</hibernate-configuration>

Classe ConexaoHibernate.java

static {
        try {
            sessionFactory = new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();
    } catch (Throwable e) {
        System.err.println("\n\n\n ----------- Erro na fábrica de sessões Hibernate ---------------- \n\n\n");
        e.printStackTrace();
        System.err.println("\n\n\n ----------- Fim dos erros na fábrica de sessões Hibernate ------- \n\n\n");
        throw new ExceptionInInitializerError(e);
    }

}

//Retorna uma sessão de comunicação com o Banco de Dados
public static Session getInstance() {
    Session session = (Session) threadLocal.get();
    session = sessionFactory.openSession();
    threadLocal.set(session);
    return session;
}

Chamada na classe principal:

public static void main(String[] args) {
    GerarTabelas();
}

private static void GerarTabelas() {
    AnnotationConfiguration cfg = new AnnotationConfiguration();

    cfg.configure("hibernate.cfg.xml");
    SchemaExport sx = new SchemaExport(cfg);
    sx.create(true, true);
}

Pesquisei sobre esse problema, no entanto não consegui resolver. Se puderem ajudar, ficarei grato!

Posta o arquivo hibernate,cfg.xml inteiro.

Utilize

jdbc:mysql://localhost/estimacao

Observe o username e password, parecem estar errados, geralmente utilizamos o mesmo nome da database no username

Estou tentando entender qual a ligação entre a configuração de conexão com o erro de não ter sido possível ler o arquivo xml.

Estou tentando entender onde voce viu ele falando que o erro foi de leitura do arquivo…
Mas se o erro for de leitura aqui vai a pergunta, voce está utilizando Maven? Observou se o arquivo xml se encontra na pasta META-INF?

No título do tópico, bem claro, escrito: could not parse configuration. hibernate.cfg.xml

Nesta minha parca experiência em programação, eu entendo que could not parse se refere à impossibilidade de concluir a “leitura” de um arquivo por alguma razão.
Como ele postou só parte do arquivo cfg.xml, não tem como verificar, de maneira mais adequada, o que pode ter ocorrido (esqueceu alguma tag, esqueceu de fechar alguma tag, esqueceu alguma declaração de namespace, etc).
E, sobre tua sugestão, a declaração do host está correta, basta prestar atenção a isso

Além do que, erros referentes a conexão seriam exibidos como SQLException e não como HibernateException, como é o caso.

@darlan_machado editei o arquivo cfg.xml, coloquei completo agora, se tiver mais algumas considerações a fazer, ficarei grato.
Olhei as tags a princípio tudo certo.

Cara, já consegui identificar o erro.
Você precisa trocar essa parte

<!DOCTYPE hibernate-configuration PUBLIC 
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

Por essa

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

Na verdade, é devido a segunda parte, ao invés de www.hibernate.org, você precisa ter o hibernate.sourceforge.net

Tenta aí e avisa.

@darlan_machado, fiz a alteração, no entanto o erro persistiu.
A fim de diminuir o tamanho do erro no console, comentei o restante do código e mantive apenas a codificação mínima no método GerarTabelas:

public static void main(String[] args) {
    GerarTabelas();
}

private static void GerarTabelas() {
    AnnotationConfiguration cfg = new AnnotationConfiguration();
    //cfg.configure("hibernate.cfg.xml");
    //SchemaExport sx = new SchemaExport(cfg);
    //sx.create(true, true);
}

Na execução do arquivo, o seguinte erro é exibido no console do IDE:

jul 19, 2018 3:50:16 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager 
<clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
jul 19, 2018 3:50:16 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.1.Final}
jul 19, 2018 3:50:16 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
jul 19, 2018 3:50:16 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist

Mesmo com a redução do log de erro não consegui identificar o problema.

Opa, perai.
Agora o erro é diferente.

Este erro ocorre quando você tenta criar uma instância de objeto da classe Configuration, da seguinte maneira

Configuration cfg = new Configuration(); //Tenta buscar o arquivo hibernate.properties.

Se você quer que ele busque pelo hibernate.cfg.xml, você precisa instanciar da seguinte maneira:

Configuration cfg = new Configuration().configure(); //Tenta buscar o arquivo hibernate.cfg.xml

Particularmente, eu acho desnecessário utilizar o hibernate.cfg.xml, principalmente se você está utilizando mapeamento através de anotações nas entidades.

@darlan_machado qual recurso você utiliza ao invés do hibernate.cfg.xml em casos que é utilizado mapeamento através de anotações nas entidades? Se possível me envie um exemplo, estou iniciando agora em Java Web.

Eu utilizo o mapeamento via hibernate.properties.
Eu “aprendi” hibernate com configuração total por xml, como eu odeio XML com todas as minhas forças, sempre busquei alternativas.
Quando descobri que poderia usar o mapeamento em arquivo de properties, comecei a estudar e a usar.
A meu ver é muito mais tranquilo e produtivo.
Mas essa é a minha opinião.

Achei o problema, como eu estou desenvolvendo um sistema novo estou me baseando em um sistema pré-existente, e não atentei quanto a versão do Hibernate que estava importado no projeto. Estava utilizando uma versão do Hibernate muito mais atualizada do que a do sistema pré-existente, alguns métodos estão como deprecated no novo Hibernate.
Solução: Removi a versão atualizada do meu projeto e importei uma versão anterior do hibernate, incrivelmente tudo está funcionando perfeitamente.
Obrigado colegas pela ajuda!