參考地址:http://blog.csdn.net/cmtobby/article/details/1750632
保存:
session=HibernateSessionFactory.getSession();
session.beginTransaction();
session.save(jc);
①執行save()方法,不執行session.flush()方法,或者commit()方法:只有選取出主鍵Id字段
Hibernate: select hibernate_sequence.nextval from dual
</pre><span style="color:#ff0000">②</span>執行save(),並且<span style="color:#ff0000">執行flush()方法</span>:向緩存提交插入語句<p></p><p></p><pre name="code" class="java">session=HibernateSessionFactory.getSession();
session.beginTransaction();
session.save(jc);
session.flush();
所以有提交,不執行
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into SXBBKF.J_CARS (NAME, TIME, ID) values (?, ?, ?)
③執行save()方法並commit()
session=HibernateSessionFactory.getSession();
session.beginTransaction();
session.save(jc);
session.getTransaction().commit();
提交了插入sql語句,並執行了更新
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into SXBBKF.J_CARS (NAME, TIME, ID) values (?, ?, ?)
附:關於beginSession問題
一、在save()方法中:
session=HibernateSessionFactory.getSession();
session.beginTransaction();
session.save(jc);
session.getTransaction().commit();
開啓事務,並進行事務提交
二、在delete()方法中:
session=HibernateSessionFactory.getSession();
//session.beginTransaction();
JCars jc=(JCars)session.get(JCars.class, new Integer("104")); //get、load之後,就編程了持久化狀態
session.delete(jc);
session.getTransaction().commit();
不beginSeesion,僅通過Get方法來加載
<span style="color:#ff0000;">Transaction not successfully started</span>
並無法正常提交,會報錯
開始transaction後,執行刪除操作成功!
三、在modify()方法中:
session=HibernateSessionFactory.getSession();
JCars jc=(JCars)session.get(JCars.class, new Integer("111"));
jc.setName("byd2");
session.getTransaction().commit();
同樣出錯:
<span style="color:#ff0000;">Transaction not successfully started</span>
同樣需要begginSession()
開啓後,成功修改