Malam ini mau tulis tentang load hibernate.cfg.xml pada folder / package yang berbeda. Terkadang pada saat run aplikasi yang menggunakan framework hibernate, kita mungkin dapat error "hibernate.cfg.xml not found". Kemungkinan, ketika menjalankan fungsi configure(), file hibernate.cfg.xml tidak terbaca pathnya.
Nah caranya cukup mudah, misalnya kita punya struktur seperti gambar di bawah ini
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- a SessionFactory instance listed as /jndi/name -->
<session-factory>
<property name="hibernate.connection.driver_class">
org.postgresql.Driver
</property>
<property name="hibernate.dialect">
org.hibernate.dialect.PostgreSQLDialect
</property>
<property name="hibernate.connection.url">jdbc:postgresql:dboprek</property>
<property name="hibernate.connection.pool_size">1</property>
<property name="hibernate.connection.username">ardi</property>
<property name="hibernate.connection.password">ardi</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</property>
<mapping resource="beans/Mahasiswa.hbm.xml" />
</session-factory>
</hibernate-configuration>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- a SessionFactory instance listed as /jndi/name -->
<session-factory>
<property name="hibernate.connection.driver_class">
org.postgresql.Driver
</property>
<property name="hibernate.dialect">
org.hibernate.dialect.PostgreSQLDialect
</property>
<property name="hibernate.connection.url">jdbc:postgresql:dboprek</property>
<property name="hibernate.connection.pool_size">1</property>
<property name="hibernate.connection.username">ardi</property>
<property name="hibernate.connection.password">ardi</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</property>
<mapping resource="beans/Mahasiswa.hbm.xml" />
</session-factory>
</hibernate-configuration>
Maka pada saat di konfigure, kita perlu seting path hibernate.cfg.xml menggunakan class File. Seperti pada Main.java di bawah ini
import java.io.File;
import java.io.IOException;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import beans.Mahasiswa;
public class Main {
public static void main(String[] args) {
SessionFactory factory = null;
Session session = null;
File file = new File("src/beans/hibernate.cfg.xml");
Mahasiswa mhs = new Mahasiswa();
mhs.setNama("Ardi");
mhs.setUmur(25);
try {
factory = new Configuration().configure(file).buildSessionFactory();
session = factory.openSession();
session.beginTransaction();
session.save(mhs);
session.beginTransaction().commit();
} catch (HibernateException hex) {
System.out.println("Err HBM Exception");
hex.printStackTrace();
}
}
}
Bisa dilihat pada kode di atas, kita buat object file. Lalu lempar object file ke fungsi configure(), untuk dijadikan sebegai factory session hibernate.
Perlu diinget, jika ingin menaruh file hibernate.cfg.xml dengan path yang tidak umum, hal yang harus diperhatikan adalah pada saat maaping resourcenya. Karena mesti disesuaikan terhadap hibernate.cfg.xml.
Mudah bukan. Kalau bingung bisa lihat di link ini.
Sekian dan wassalam :senyum
0 komentar:
Posting Komentar