2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

Hibernate 中g(shù)etSession().save() 保存不到數(shù)據(jù)庫 解決辦法

 菜鳥之舞 2012-04-10

背景:
普通的java項目,單獨添加hibernate框架,不添加其他任何框架的情況下。

分析:
沒有使用事務(wù)管理模式,myEclipse的反向工程生成的dao的save方法

  1. public void save(Cigarette transientInstance) {
  2. log.debug(“saving Cigarette instance”);
  3. try {
  4. getSession().save(transientInstance);
  5. log.debug(“save successful”);
  6. } catch (RuntimeException re) {
  7. log.error(“save failed”, re);
  8. throw re;
  9. }


}
并不能說這個沒有添加事務(wù)管理模式,只不過這么寫他有的時候靈有的時侯不靈,那我們改為顯示的提交事務(wù)就成了!

  1. public void save(Cigarette transientInstance) {
  2. log.debug(“saving Cigarette instance”);
  3. Transaction transaction= getSession().beginTransaction();
  4. try {
  5. getSession().save(transientInstance);
  6. log.debug(“save successful”);
  7. } catch (RuntimeException re) {
  8. log.error(“save failed”, re);
  9. throw re;
  10. }
  11. transaction.commit();
  12. getSession().flush();
  13. getSession().close();
  14. }



結(jié)論:
hibernate成功執(zhí)行sava且不報錯后,數(shù)據(jù)庫中沒有數(shù)據(jù)的原因:hibernate 必須顯示的聲明提交事務(wù)

JDBC默認的是自動提交
Hibernian默認的是手動提交,必須開啟事務(wù),手動提交,否則數(shù)據(jù)庫中沒有保存的記錄:
Transaction transaction= getSession().beginTransaction();
getSession().save(transientInstance);
transaction.commit();

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多