复制代码代码如下:
paket dao;
import org.hibernate.HibernateException;
import org.hibernate.Sesi;
import org.hibernate.cfg.Konfigurasi;
/**
* @penulis minxuenetcn
*/
kelas publik HibernateSessionFactory {
private final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
konfigurasi Konfigurasi pribadi = Konfigurasi baru();
org.hibernate.SessionFactory sessionFactory pribadi;
/**
* hibernasi.cfg.xml
* @param configFile
*/
konfigurasi set kekosongan publik(String configFile){
this.configuration=Konfigurasi baru();
konfigurasi.configure(configFile);
}
/**
* Mengembalikan contoh Sesi ThreadLocal.
* @sesi kembali
* @melempar HibernateException
*/
Sesi publik getSession() melempar HibernateException {
Sesi sesi = (Sesi) threadLocal.get();
if (sesi == null || !sesi.isOpen()) {
jika (sessionFactory == null) {
membangun kembaliSessionFactory();
}
sesi = (sessionFactory!= null) ? sessionFactory.openSesi()
: batal;
threadLocal.set(sesi);
}
sesi kembali;
}
/**
* Bangun kembali pabrik sesi hibernasi
*
*/
public void membangun kembaliSessionFactory() {
mencoba {
sessionFactory = ini.konfigurasi.buildSessionFactory();
} tangkapan (Pengecualian e) {
Sistem.err
.println("%%%% Kesalahan Saat Membuat SessionFactory %%%%");
e.printStackTrace();
}
}
/**
* Tutup contoh sesi hibernasi tunggal.
*
* @melempar HibernateException
*/
public void closeSession() melempar HibernateException {
Sesi sesi = (Sesi) threadLocal.get();
threadLocal.set(null);
if (sesi != null) {
sesi.close();
}
}
/**
* sesi pengembalian pabrik
*
*/
org publik.hibernate.SessionFactory getSessionFactory() {
kembali sessionFactory;
}
/**
* mengembalikan konfigurasi hibernasi
*/
Konfigurasi publik getConfiguration() {
konfigurasi kembali;
}
}