proléme Hibernate

icha_7146
proléme Hibernate

Bonsoir

Je suis débutante en Hiebrnate et je trouve des difficulters j'espére que vous allez m'aide parceque vraiment je me bloque là

bon voila j'ai crée dans une premier temps une projet sous eclipse puis j'ai ejouter les libraires de hibernate + le driver de postgresql
aprés j'ai crée un fichier de configuration hibernate.cfg.xml voilà son contenu

<?xml version="1.0" encoding="utf-8"?>
 <! DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "- / / Hibernate / Hibernate Mapping DTD 3.0 / / EN" 
    " http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > "Http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 


<hibernate-configuration>
	<session-factory>
		<!-- local connection properties -->
		<property name="hibernate.connection.url">
			jdbc:postgresql://localhost:5432/DBCRJJ
		</property>
		<property name="hibernate.connection.driver_class">
			org.postgresql.Driver
		</property>
		<property name="hibernate.connection.username">postgres</property>
		<property name="hibernate.connection.password">1234</property>
		<!-- property name="hibernate.connection.pool_size"></property -->
		<!-- dialect for PostgreSQL -->
		<property name="dialect">
			org.dialect.PostgreSQLDialect
		</property>
		<property name="hibernate.show_sql">false</property>
		<property name="hibernate.use_outer_join">true</property>
		<!--
			<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
			<property name="jta.UserTransaction">java:comp/UserTransaction</property>
		//-->
		<property name="hibernate.transaction.factory_class">
			org.hibernate.transaction.JDBCTransactionFactory
		</property>
		<mapping resource="contact.hbm" />
	</session-factory>
</hibernate-configuration>

aprés j'ai crée e fichier de mapping voilà son contenu

<?xml version="1.0"?>
 <! DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "- / / Hibernate / Hibernate Mapping DTD 3.0 / / EN" 
    " http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > "Http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 


<hibernate-mapping package="PkCOntact">
	<class name="PKCOntact.contact" table="contact">
		<id
			column="id"
			name="id"
			type="integer"
		>
			<generator class="increment" />
		</id>
		<property
			column="prenom"
			length="25"
			name="prenom"
			not-null="false"
			type="string"
		 />
		<property
			column="age"
			length="10"
			name="age"
			not-null="false"
			type="integer"
		 />
		<property
			column="nom"
			length="25"
			name="nom"
			not-null="false"
			type="string"
		 />
	</class>
</hibernate-mapping>

j'ai crée une class bean voilà son contenu

package PkCOntact;

public class contact {
	private int id;
	private String nom;
	private String prenom;
	private int age;

	public contact() {

	}

	public contact(int id, String nom, String prenom, int age) {

		this.id = id;
		this.nom = nom;
		this.prenom = prenom;
		this.age = age;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public String getPrenom() {
		return prenom;
	}

	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}


	

}


puis le class qui contient ma sessionfactory sous le nom de HibernateUtil.java voilà son contenu

package PkCOntact;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;


public class HibernateUtil {
	private static String CONFIG_FILE_LOCATION="/hibernate.cfg.xml";
	private static final ThreadLocal<Session> threadlocal=new ThreadLocal<Session>();
	private static final Configuration cfg =new Configuration();
	private static org.hibernate.SessionFactory sessionFactory;
	public static Session currentSession()throws HibernateException{
	Session session=(Session)threadlocal.get();	
	if(session==null||!session.isOpen()){
		if(sessionFactory==null){
			try{
				cfg.configure(CONFIG_FILE_LOCATION);
				sessionFactory=cfg.buildSessionFactory();
				
			}
			catch(Exception ex){
				System.err.println("Erreur");
				ex.printStackTrace();
			}}
			session=(sessionFactory!=null)?sessionFactory.openSession():null;
			threadlocal.set(session);}
			return session;
			
		}
		public static void CloseSession()throws HibernateException{
			Session session=(Session)threadlocal.get();
			threadlocal.set(null);
			if(session!=null){
				session.close();
			}
		}
}

aprés une class man MainRead.java voilà son contenu

package PkCOntact;

import java.util.Iterator;

import org.hibernate.Session;

public class MainRead {
public static void main(String []args){

				Session session=HibernateUtil.currentSession();
				Iterator iter=session.createQuery("from contact").iterate();
				System.out.println("| id || nom || prenom || Age |");
				while(iter.hasNext()){
					contact contact=(contact)iter.next();
				System.out.println("|"+contact.getId());
				System.out.println("  "+contact.getNom()+" ");
				System.out.println(contact.getPrenom()+"  ");
				System.out.println(contact.getAge()+" |");
				System.out.println();
		             }
				
				HibernateUtil.CloseSession();
				
			
		    


}
}

j'ai executé j'ai reçu cette erreur

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Erreur
org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1500)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1434)
	at PkCOntact.HibernateUtil.currentSession(HibernateUtil.java:17)
	at PkCOntact.MainRead.main(MainRead.java:10)
Caused by: org.dom4j.DocumentException: Error on line 2 of document  : The markup in the document preceding the root element must be well-formed. Nested exception: The markup in the document preceding the root element must be well-formed.
	at org.dom4j.io.SAXReader.read(SAXReader.java:482)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1490)
	... 3 more
Exception in thread "main" java.lang.NullPointerException
	at PkCOntact.MainRead.main(MainRead.java:11)

j'ai fait une recherche sur l'erreur "log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly." alors j'ai constaté qu'il faut que j' ajoute un fichier log4j.properties au src de mon projet avec se contenu

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=debug, stdout
log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=info
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
 
### log cache activity ###
log4j.logger.org.hibernate.cache=info
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

aprés que j'ai ajouté ce fichier log je ne recois plus l'erreur concernant le log

je recois ces erreur

21:37:41,218  INFO Environment:514 - Hibernate 3.2.6
21:37:41,234  INFO Environment:547 - hibernate.properties not found
21:37:41,234  INFO Environment:681 - Bytecode provider name : cglib
21:37:41,234  INFO Environment:598 - using JDK 1.4 java.sql.Timestamp handling
21:37:41,328  INFO Configuration:1432 - configuring from resource: /hibernate.cfg.xml
21:37:41,328  INFO Configuration:1409 - Configuration resource: /hibernate.cfg.xml
21:37:41,546 ERROR XMLHelper:61 - Error parsing XML: /hibernate.cfg.xml(2) The markup in the document preceding the root element must be well-formed.
Erreur
org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1500)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1434)
	at PkCOntact.HibernateUtil.currentSession(HibernateUtil.java:17)
	at PkCOntact.MainRead.main(MainRead.java:10)
Caused by: org.dom4j.DocumentException: Error on line 2 of document  : The markup in the document preceding the root element must be well-formed. Nested exception: The markup in the document preceding the root element must be well-formed.
	at org.dom4j.io.SAXReader.read(SAXReader.java:482)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1490)
	... 3 more
Exception in thread "main" java.lang.NullPointerException
	at PkCOntact.MainRead.main(MainRead.java:11)

alors la je me bloque et j'attend votre aide

Merci d'avance

fredericmazue
Re: proléme Hibernate

Quote:
hibernate.properties

On dirait qu'un fichier hibernate.properties est cherché mais pas trouvé. Parce que absent ou inaccessible pour une raison à déterminer (droits, path, etc...)

Niroken
Re: proléme Hibernate

Hello,

Tu as eu une erreur du type invalid file : hbernate.cfg.xml,
J'ai édité ton fichier sous xmlspy et ene ffet, celui ci n'était pas valide a cause de la ligne de déclaration de la DTD.

Je te transmets le même fichier valide :

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



<hibernate-configuration>
   <session-factory>
      <!-- local connection properties -->
      <property name="hibernate.connection.url">
         jdbc:postgresql://localhost:5432/DBCRJJ
      </property>
      <property name="hibernate.connection.driver_class">
         org.postgresql.Driver
      </property>
      <property name="hibernate.connection.username">postgres</property>
      <property name="hibernate.connection.password">1234</property>
      <!-- property name="hibernate.connection.pool_size"></property -->
      <!-- dialect for PostgreSQL -->
      <property name="dialect">
         org.dialect.PostgreSQLDialect
      </property>
      <property name="hibernate.show_sql">false</property>
      <property name="hibernate.use_outer_join">true</property>
      <!--
         <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
         <property name="jta.UserTransaction">java:comp/UserTransaction</property>
      //-->
      <property name="hibernate.transaction.factory_class">
         org.hibernate.transaction.JDBCTransactionFactory
      </property>
      <mapping resource="contact.hbm" />
   </session-factory>
</hibernate-configuration>

Bonne chance,
Niroken

fredericmazue
Re: proléme Hibernate

Ah oui error parsing... Ca m'apprendra à lire les messages d'erreur jusqu'au bout :(

icha_7146
Re: proléme Hibernate

Bonsoir

Merci pour votre aide je vais ajouter le fichier.proprietes et si je trouve de bléme je vous contact une autre fois et Merci Infiniment
:wink: