复制代码代码如下:
แพ็คเกจดาว;
นำเข้า org.hibernate.HibernateException;
นำเข้า org.hibernate.Session;
นำเข้า org.hibernate.cfg.Configuration;
-
* @ผู้เขียน minxuenetcn
-
HibernateSessionFactory คลาสสาธารณะ {
ThreadLocal สุดท้ายส่วนตัว threadLocal = ใหม่ ThreadLocal <เซสชัน> ();
การกำหนดค่าส่วนตัว การกำหนดค่า = การกำหนดค่าใหม่ ();
ส่วนตัว org.hibernate.SessionFactory sessionFactory;
-
* hibernate.cfg.xml
* @param configFile
-
setConfiguration โมฆะสาธารณะ (สตริง configFile) {
this.configuration=การกำหนดค่าใหม่();
configuration.configure(configFile);
-
-
* ส่งคืนอินสแตนซ์เซสชัน ThreadLocal
* @return เซสชั่น
* @ พ่น HibernateException
-
เซสชันสาธารณะ getSession () พ่น HibernateException {
เซสชั่นเซสชั่น = (เซสชั่น) threadLocal.get();
ถ้า (เซสชัน == null || !session.isOpen()) {
ถ้า (sessionFactory == null) {
สร้าง SessionFactory ใหม่ ();
-
เซสชัน = (sessionFactory != null) ? sessionFactory.openSession()
: โมฆะ;
threadLocal.set(เซสชัน);
-
เซสชั่นกลับ;
-
-
* สร้างโรงงานเซสชันไฮเบอร์เนตขึ้นมาใหม่
-
-
โมฆะสาธารณะ rebuildSessionFactory () {
พยายาม {
sessionFactory = this.configuration.buildSessionFactory();
} จับ (ข้อยกเว้นจ) {
System.ข้อผิดพลาด
.println("%%%% เกิดข้อผิดพลาดในการสร้าง SessionFactory %%%%");
e.printStackTrace();
-
-
-
* ปิดอินสแตนซ์เซสชันไฮเบอร์เนตเดียว
-
* @ พ่น HibernateException
-
โมฆะสาธารณะ closeSession () พ่น HibernateException {
เซสชั่นเซสชั่น = (เซสชั่น) threadLocal.get();
threadLocal.set(null);
ถ้า (เซสชัน!= null) {
เซสชั่น.ปิด();
-
-
-
* คืนโรงงานเซสชั่น
-
-
สาธารณะ org.hibernate.SessionFactory getSessionFactory () {
กลับ sessionFactory;
-
-
* ส่งคืนการกำหนดค่าไฮเบอร์เนต
-
การกำหนดค่าสาธารณะ getConfiguration () {
การกำหนดค่าส่งคืน;
-
-