2015-12-01 83 views
0

這是顯示信息的數據表的命令,我看到它是重複Java的休眠聲明連接有效

CODE 1

public class DBTable { 

    public List<MdGmail> showGmail() { 
     Configuration conf = new Configuration().configure("hibernate.cfg.xml"); 
     SessionFactory sf = conf.buildSessionFactory(); 
     currentSession = sf.getCurrentSession(); 
     currentSession.beginTransaction(); 
     return currentSession.createCriteria(MdGmail.class).list(); 
    } 

    public List<MdBlogger> showBlogger() { 
     Configuration conf = new Configuration().configure("hibernate.cfg.xml"); 
     SessionFactory sf = conf.buildSessionFactory(); 
     currentSession = sf.getCurrentSession(); 
     currentSession.beginTransaction();  
     return currentSession.createCriteria(MdBlogger.class).list(); 
    } 
} 

在我的課DBTABLE聲明,我創建了一個列表功能在數據庫中顯示數據表格作爲表格gmail,訂單... 隨着第一個代碼1需要重寫每個函數的聲明,所以我想要的是創建一個連接函數,所有代碼爲2

但與方式這一聲明它不會更新值在數據庫中更改

CODE 2

public class DBTable { 

    private static final Configuration conf = new Configuration().configure("hibernate.cfg.xml"); 
    private static final SessionFactory sf = conf.buildSessionFactory(); 
    private static Session currentSession; 

    public DBTable() { 
     currentSession = sf.getCurrentSession(); 
     currentSession.beginTransaction(); 
    } 

    private static DBTable instance = null; 

    public static DBTable getInstance() { 
     if (instance == null) { 
      instance = new DBTable(); 
     } 
     return instance; 
    } 
    public List<MdGmail> showTableGmail() { 
     return currentSession.createCriteria(MdGmail.class).list(); 
    } 
    public List<MdGmail> showTableOrder() { 
     return currentSession.createCriteria(MdGmail.class).list(); 
    } 
} 

如果使用新的附加數據功能,連接將被關閉,命令數據顯示我的表會停止working.Please幫我

public boolean saveOrUpdateGmail(MdGmail table) { 
    try { 
     currentSession.saveOrUpdate(table); 
     currentSession.getTransaction().commit(); 
     return true; 
    } catch (Exception e) { 
     currentSession.getTransaction().rollback(); 
     e.printStackTrace(); 
     return false; 
    } 
} 
+1

我不明白你的問題,反正你用sf.openSession()試過? –

+1

如果問題尚未解決,請使用日誌中的錯誤消息編輯問題。 –

+0

謝謝@ localhost999我的語句對邏輯錯誤,所以它沒有錯誤。因爲我調用了下面的語句Table.getInstance DB()。 ShowGmail()我試了好幾次我終於克服了簡單,我擦除命令檢查「實例null」 –

回答

1

使用Hibernate的最簡單的策略是開放的會話(或者獲取當前的一個),開始一個事務,執行的請求,提交和CL每個操作都有一個會話(showTableGmail, saveOrUpdateGmail)。因此,您需要從DBTable()構造函數中刪除所有代碼,並執行類似this的操作。

+0

目前我不明白,但我會仔細考慮你的程序。謝謝你的建議 –