Configurando o Hibernate no NetBeans

17 respostas
anderline

Olá amigos, gostaria de saber se alguém de vocês tem algum turotial ou pode me auxiliar na configuração do hibernate no netbeans.
Eu começei a estudar o hibernate por um tutorial aqui do GUJ, mas infelizmente este tutorial não ensina a parte mais difícil para os iniciantes que é a configuração do ambiente, o erro que está ocorrendo é este:

[color=red]log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).

log4j:WARN Please initialize the log4j system properly.

org.hibernate.MappingException: Could not parse mapping document in XML string

at org.hibernate.cfg.Configuration.addXML(Configuration.java:387)

at HibernateUtility.(HibernateUtility.java:19)

at Teste.main(Teste.java:23)

Caused by: org.dom4j.DocumentException: Error on line 1 of document  : Content is not allowed in prolog. Nested exception: Content is not allowed in prolog.

at org.dom4j.io.SAXReader.read(SAXReader.java:482)

at org.dom4j.io.SAXReader.read(SAXReader.java:365)

at org.hibernate.cfg.Configuration.addXML(Configuration.java:379) 2 more

Exception in thread main java.lang.NullPointerException

at HibernateUtility.getSession(HibernateUtility.java:30)

at Teste.main(Teste.java:23)

Java Result: 1[color=#444444] [/color]

Desde de já agradeço a atenção de todos.
Abraços._

17 Respostas

Sergio_Tupynamba

ae anderline…
como tah seu arquivo hibernate.cfg.xml???
ele eh responsavel pelas propriedades de
inicialização e os caminhos dos arquivos de mapeamento!!

vc tah fazendo os mapeamento td certo???

flw

anderline

E aí Sério blz,

Então cara na verdade eu só tô tentanto rodar os arquivos do exemplo de um tutorial que eu peguei aqui no guj.
Agora oque eu não sei oq q tem que fazer são com os arquivos do mapeamento, eu devo na tag mapping resource colocar o diretório onde estão os arquivos, pq eles estão no seguinte diretório C:\aplicativos\hibernate.
Mas o arquivo é este :

<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/tcc?autoReconnect=true
	</property>
	<property 
		name="hibernate.connection.username">
		root
	</property>
	<property 
		name="hibernate.connection.password">
	</property>		
	
	<!-- Condiguração do c3p0 -->
	
	<property name="hibernate.c3p0.max_size">10</property>
	<property name="hibernate.c3p0.min_size">2</property>
	<property name="hibernate.c3p0.timeout">5000</property>		
	<property name="hibernate.c3p0.max_statements">10</property>
	<property name="hibernate.c3p0.idle_test_period">3000</property>
	<property name="hibernate.c3p0.acquire_increment">2</property>			

	<!-- Configurações de debug -->

	<property name="show_sql">true</property>
    <property name="use_outer_join">true</property>	
    <property name="hibernate.generate_statistics">true</property>
    <property name="hibernate.use_sql_comments">true</property>
    	
	<mapping resource="Curso.hbm.xml"/>
	<mapping resource="Disciplina.hbm.xml"/>
	<mapping resource="Turma.hbm.xml"/>			
	<mapping resource="Pessoa.hbm.xml"/>	
	<mapping resource="Aluno.hbm.xml"/>		
	<mapping resource="Professor.hbm.xml"/>		
	<mapping resource="Endereco.hbm.xml"/>
		
</session-factory>

Abraços._

anderline

Outra coisa, o erro que está dando é o seguinte :HibernateException hibernate.cfg.xml not found.

Abraços._

Sergio_Tupynamba

nem precisa mostrar o diretorio…soh tem q colocar o pacote q eles estao…

por exemplo se eles tiverem no pacote persistencia eh soh colocar:

to passando um exemplo de Cliente.hbm.xml e o hibernate.cfg.xml

//Cliente.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<class name="negocio.Cliente" table="cliente" lazy="false">

    <id name="Codigo" type="integer">
        <generator class="increment"/>
     </id>
    <property name="Nome" type="string"/>
    <property name="Cpf" type="string"/>
    <property name="Rg" type="string"/>
    <property name="Email" type="string"/>
    <property name="Telefone" type="string"/>

//hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?> org.hibernate.dialect.MySQLDialect true com.mysql.jdbc.Driver jdbc:mysql://localhost/teste root root
</session-factory>

flw,
abraco

anderline

Olá Serio,

Cara desculpa a amolação, nem sei como agradecer a sua ajuda, mas eu usei o seu hibernate.cfg.xml e seu Cliente.hbm.xml e continua apresentando o mesmo erro " hinernate.cfg.xml" neste linha de código :

SessionFactory factory;

factory = new Configuration().configure().buildSessionFactory();

Eu tô achando que deve ser algum erro de classpath, pois desde eu não confiurei o classpath do meu pc pro hibernate, a única coisa que fiz foi colocar os jar necessários no meu projeto no NetBeans.
Sérgio não teria como você colocar como está configurado o seu classpath ?, pois acho que esse deve ser o problema.

Abraços._

Sergio_Tupynamba

ae anderline,

to passando a classe de conexao com o banco., observe no metodo open() q vc deve passar a url e o arquivo hibernate.cfg.xml(coisa q vc naum tava fazendo)
cria um pacote persistencia…coloca essa classe, o cliente.hbm.xml e a hibernate.cfg.xml…
e naum esquece de criar um classe Cliente.java com atributos(iguais do cliente.hbm) e gets e sets…cria uma tabela Cliente no banco e jah era!!

public class DataManager {

private static DataManager instance = new DataManager();
protected URL url;
protected Configuration cfg ;
protected SessionFactory sf ;
private Session session ;
private boolean aberta;

public static DataManager getInstance() {
    return instance;
}

public void close()  {
    session.close();
    sf.close();
    aberta=false;
}

public boolean isOpen(){
    return aberta;
}

public String open() {
    try {
        url = DataManager.class.getResource("hibernate.cfg.xml");
        cfg = new Configuration();
        cfg.configure(url);
        sf = cfg.buildSessionFactory();
        session = sf.openSession();
        session.setFlushMode(FlushMode.COMMIT);
        aberta=true;
        return "";
    } catch(HibernateException e) {
        System.out.println("ERRO FATAL: camada de persistencia DataManager / Hibernate - " + e.getMessage());
        e.printStackTrace();
        aberta=false;
        return e.getMessage();
    }
    
}

private DataManager() {
    
}
public void save(Object entity) throws HibernateException{

getInstance().open();

Transaction t = session.beginTransaction();

session.saveOrUpdate(entity);

t.commit();

getInstance().close();

}

public void delete(Object entity) throws HibernateException{

getInstance().open();

Transaction t = session.beginTransaction();

session.delete(entity);

t.commit();

getInstance().close();

}

}

flw
:smiley:

anderline
Olá Sérgio, então eu rodei esta classe que vc me passou e está apresentando este erro :

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).

log4j:WARN Please initialize the log4j system properly.

Exception in thread main java.lang.NullPointerException

at org.hibernate.cfg.Configuration.configure(Configuration.java:1365)

at hibernate.DataManager.open(DataManager.java:49)

at hibernate.DataManager.main(DataManager.java:84)

Java Result: 1

Abraços.

W

Infelizmente eles não se entenderam…

nilsoncastro

cara, em foruns é difícil enteder mesmo, em algum tempo atrás eu tava nessa tb, tentei de tudo, saí googlando tudo por ai, até que resolvi gastar meu inglês e ler a documentação oficial, só então descobrir qual era o diretório base do hibernate

$classpath/ext/data/
no meu caso:
E:\Arquivos de programas\Java\jdk1.6.0\jre\lib\ext\data

Coloca todos arquivos de configuração (hibernate.properties, log4j.properties, hibernate.cfg.xml) e seus mapeamentos de tabela nesse diretório

Espero ter ajudado

anderline

Valeu cara, só uma dúvida, eu uso o jdk1.5 e esse diretório data não existe, eu devo criar um ?.
E eu devo colocar os xml dos mapeamentos das classes nele tb ?
Abraços.

nilsoncastro

pelo menos aqui eu criei esse diretorio data mesmo, e foi a única soluçao que encontrei e coloca sim todos .xml lá dentro pois evita confusão de caminhos de diretorios
seu caminho deverá ficar assim entao
Java\jdk1.5.0\jre\lib\ext\data

anderline

Valeu amigo, vou tentar aqui.

J

Cara, eu to achando que vc precisa apenas importar o jar do log4j n sei se estou certo…
experimenta importar isso http://www.mediafire.com/file/czmmujzo0dm/log4j-1.2.11.jar na sua biblioteca.

Não sei se estou certo, posta ai os resultados ou me corrijam…

LucasAdri07

Será que desde de 2007, a duvida dele não foi resolvida ?

*Ressucitado

J

OMG, desculpem me, nem tinha me tocado, =/

alguém fecha isso ^^

LucasAdri07

Sua informação pode ajudar sim, só tipo, expecifique que é uma informação a mais …

rodrigo.guri

:lol: :lol: :lol:

Criado 9 de outubro de 2006
Ultima resposta 31 de mai. de 2010
Respostas 17
Participantes 7