Java hibernate声明连接有效

时间:2015-12-01 03:13:12

标签: java hibernate

这是显示信息数据表的命令,我看到它重复的声明

代码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创建一个连接函数

但是这个声明不会更新的方式在数据库中改变了值

代码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();
    }
}

如果使用新的附加数据功能,连接将被关闭,命令数据显示我的表将停止工作。请帮助我

    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 个答案:

答案 0 :(得分:1)

使用Hibernate的最简单策略是打开一个会话(或获取当前的一个),开始一个事务,为每个操作(showTableGmail, saveOrUpdateGmail)执行请求,提交和关闭会话。因此,您需要删除DBTable()构造函数中的所有代码,并执行this

之类的操作