日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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

 菜鳥之舞 2012-04-10

背景:
普通的java項(xiàng)目,單獨(dú)添加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. }


}
并不能說這個(gè)沒有添加事務(wù)管理模式,只不過這么寫他有的時(shí)候靈有的時(shí)侯不靈,那我們改為顯示的提交事務(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且不報(bào)錯(cuò)后,數(shù)據(jù)庫中沒有數(shù)據(jù)的原因:hibernate 必須顯示的聲明提交事務(wù)

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多