1. 程式人生 > >Hibernate5.2.10和4.2.3版本使用openSession().save()的差異

Hibernate5.2.10和4.2.3版本使用openSession().save()的差異

簡單的來說,4.2.3版本,save()之後,使用flush不需要事務的支援,但是5.2.10使用flush需要事務的支援,簡單的程式碼編寫如下:

public class Test1Dao {

    private SessionFactory sessionFactory;

    //通過構造器傳入SessionFactory物件
    public Test1Dao(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public void update() {
        try {
            Session session = sessionFactory.openSession();
            //開啟事務控制
            Transaction transaction = session.beginTransaction();
            TestInfo testInfo = (TestInfo) session.createNativeQuery("SELECT  * from test_info").addEntity(TestInfo.class).uniqueResult();
            testInfo.setName("測試dsdbj");
            session.update(testInfo);
            transaction.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}