W celu uruchomienia hibernate wykonałem:
-
utworzyłem nowy projekt, do którego dodałem:
ant-junit-1.6.1.jar commons-lang-1.0.1.jar ejb-api.jar jta-api.jarc3p0-0.8.4.5.jar commons-logging-1.0.4.jar hibernate-2.1.6.jar junit-3.8.1.jar cglib-full-2.0.1.jar dom4j-1.4.jar hsqldb.jar log4j-1.2.8.jar
commons-collections-2.1.1.jar ehcache-0.9.jar jsdk23.jar odmg-3.0.jar
Dodanie bibliotek wykonałem klikając w eclipse prawym guzikiem na Referenced Libraries -> Build Path.. --> configure Build Path -> Add External Jars... i dodałem wszystkie powyższe jary. -
Plik konfiguracyjny hibernate.cfg.xml umieściłem w katalogu głównym projektu
Łącze się z bazą danych postgreSQL 8.3 na lokalnym komputerze
<?xml version="1.0"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Ustawienia dla lokalnej bazy PostgreSQL. -->
<property name="dialect">net.sf.hibernate.dialect.PostgreSQLDialect</property>
<property name="query.substitutions">yes 'Y', no 'N'</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://localhost/postgres</property>
<property name="connection.username">postgres</property>
<property name="connection.password"></property>
<!-- Uzycie puli polonczen C3P0. -->
<property name="c3p0.min_size">3</property>
<property name="c3p0.max_size">5</property>
<property name="c3p0.timeout">1800</property>
<!-- Wbudowana w Hibernate pula do testow. -->
<property name="connection.pool_size">1</property>
<!-- uzycie EHCache bez bufora zapytn -->
<property name="cache.provider_class">net.sf.ehcache.hibernate.Provider</property>
<property name="cache.use_query_cache">false</property>
<property name="cache.use_minimal_puts">false</property>
<!-- Wyswietlanie kodu SQL na standardowym wyjsciu. -->
<property name="show_sql">true</property>
<!-- Pliki odwzorowan. Pliki odwzorowan umieszczasie w tych samych katalochach co pliki .class-->
<mapping resource="Klient.hbm.xml"/>
</session-factory>
</hibernate-configuration>
- przykładowy plik z kasą trwałą
public class Klient
{
int id;
String inie, nazwisko, ulica, miasto, dataurodzenia, telefon;
}
- Plik odwzorowania Klient.hbm.xml do powyższej klasy
umiesciłem go w katalogu: nazwa_projektu/bin, tam gdzie plik z Klienci.class
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="Klient" table="Klienci">
<id name="id" column="idKlienta">
<generator class="increment"/>
</id>
<property name="imie" column="imie"/>
<property name="nazwisko" column="nazwisko"/>
<property name="ulica" column="ulica"/>
<property name="miasto" column="miasto"/>
<property name="dataUrodzenia" column="dataUrodzenia"/>
<property name="telefon" column="telefon"/>
</class>
</hibernate-mapping>
- Uruchomienie hibernate
import net.sf.hibernate.cfg.*;
import net.sf.hibernate.*;
public class ORMKlient
{
public static void main(String args[])throws HibernateException, MappingException
{
SessionFactory sesion=new Configuration()
.setProperties(System.getProperties())
.buildSessionFactory();
System.out.println("Hibernate dziala");
}
}
Nniezależnie od utworzenia obiektu SessionFactory kompilatyor zwraca:
log4j:WARN No appenders could be found for logger (org.hibernate.dialect.Dialect).
log4j:WARN Please initialize the log4j system properly.
/*foo*/ select * from ( select rownumber() over() as rownumber_, * from foos ) as temp_ where rownumber_ between ?+1 and ?
/*foo*/ select * from ( select rownumber() over() as rownumber_, row_.* from ( select distinct * from foos ) as row_ ) as temp_ where rownumber_ between ?+1 and ?
/*foo*/ select * from ( select rownumber() over(order by foo.bar, foo.baz) as rownumber_, * from foos foo order by foo.bar, foo.baz ) as temp_ where rownumber_ between ?+1 and ?
/*foo*/ select * from ( select rownumber() over() as rownumber_, row_.* from ( select distinct * from foos foo order by foo.bar, foo.baz ) as row_ ) as temp_ where rownumber_ between ?+1 and ?
Nie wiem dlaczego nie działa.
poza tym nie jestem pewny gdzie umieścić plik konfiguracyjny. W katalogu nazwa_projektu czy w katalogu nazwa_projektu/bin.