在java中休眠

时间:2016-02-10 10:20:57

标签: java database hibernate

Session session = null;
        try {
            session = HibernateUtil.getSessionFactory().getCurrentSession();
            if(session != null)
            {   

                String updateSql = "Update school Set name= :name Where id= :id";
                    Query query = session.createQuery(updateSql);
                    query.setParameter("name ", name );
                    query.setParameter("id", id);
                    int updateRows= query.executeUpdate();


            }
        } 
        catch (HibernateException e) 
        {
            log.error("Error in updating name i ");
        }     

此处没有更新的行为1,但更新未在数据库中提交。交易也是承诺的。

Session session = null;
        try {
            session = HibernateUtil.getSessionFactory().getCurrentSession();
            if(session != null)
            {   

                    School school = getSchool(id);
                    school.name (name);
                    session.update(school);


            }
        } 
        catch (HibernateException e) 
        {
            log.error("Error in updating name i ");
        }  

相反,此代码段在同一位置提交。

第一个查询不是在数据库中提交数据而第二个查询正在工作。我想知道这背后的原因

1 个答案:

答案 0 :(得分:0)

我是否正确理解您将事务提交到DB中的问题。

你需要这样做:

 public void UpdateSchool (School school ){
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    session.update(school );
    session.getTransaction().commit();
}

我还建议您使用JPA。在这种情况下,您根本不需要考虑会话,它会根据您的需要自动打开,关闭和提交会话。