国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Hibernate flush理解

noONE / 3591人閱讀

摘要:問題在框架沒有事務(wù)的情況下,通過的,無法將數(shù)據(jù)持久化至數(shù)據(jù)庫中,即使強(qiáng)制刷新后后也同樣如此。原因混淆了框架中事務(wù)和事務(wù)的概念。對于增刪改操作,必須后才能持久化至數(shù)據(jù)庫。除非執(zhí)行提交了事務(wù)。執(zhí)行之后無法進(jìn)行回滾。

問題

在spring框架沒有事務(wù)的情況下,通過hibernate的session.save(entity),無法將數(shù)據(jù)持久化至數(shù)據(jù)庫中,即使強(qiáng)制刷新后(flush())后也同樣如此。

原因

混淆了spring框架中事務(wù)和mysql事務(wù)的概念。對于增刪改操作,必須commit后才能持久化至mysql數(shù)據(jù)庫。若不commit,只有在同一個連接中才能看到最新的更改,對其他連接不可見。

擴(kuò)展 Hibernate的flush

執(zhí)行時會清除session緩存并向數(shù)據(jù)庫發(fā)送SQL語句并執(zhí)行,但此時如果數(shù)據(jù)庫當(dāng)前存在一個事務(wù),數(shù)據(jù)庫會先將這些SQL語句緩存起來,那么此時在數(shù)據(jù)庫中是無法看到SQL語句執(zhí)行結(jié)果的。除非執(zhí)行commit提交了事務(wù)。只要沒有執(zhí)行commit()方法,就能通過rollback()方法進(jìn)行回滾。

Hibernate的commit

執(zhí)行時會先隱式調(diào)用flush()方法,再提交事務(wù)。執(zhí)行之后無法rollback()進(jìn)行回滾。即commit操作才是真正的將實體數(shù)據(jù)持久化至數(shù)據(jù)庫。

總結(jié)

通過hibernate進(jìn)行數(shù)據(jù)庫連接時,autocommit默認(rèn)是false,因此僅僅做flush()是無法將數(shù)據(jù)持久化至數(shù)據(jù)庫的,必須顯式調(diào)用commit方法。
而如果使用jdbcTemplate進(jìn)行數(shù)據(jù)庫連接的話,無需顯式執(zhí)行commit方法,因為此時autocommit默認(rèn)為true。通過以下代碼驗證之:

Connection conn = DriverManager.getConnection(JdbcTest.URL, JdbcTest.USER, JdbcTest.PWD); // 通過JDBC進(jìn)行連接
SessionFactory sFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); 
Session session = sFactory.openSession(conn); // 使用jdbc的連接初始化hibernate的session
System.out.println(session.connection().getAutoCommit()); // autoCommit默認(rèn)為true

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/78254.html

相關(guān)文章

  • Hibernate快速了解

    摘要:和就是針對的一級緩存的處理。事務(wù)對數(shù)據(jù)的操作都是封裝在事務(wù)當(dāng)中的,并且默認(rèn)是非自動提交的方式。所以對保存對象時,如果不開啟事務(wù),并且手工提交事務(wù),對象并不會真正保存在數(shù)據(jù)庫中。 ORM 全稱Object/Relationship Mapping(對象/關(guān)系映射) 為何引入ORM Java、C++等許多語言是面向?qū)ο蟮木幊趟枷?,但是底層?shù)據(jù)庫往往是關(guān)系型數(shù)據(jù)庫,為了往數(shù)據(jù)庫中插入數(shù)據(jù),需...

    selfimpr 評論0 收藏0
  • Hibernate【緩存】知識要點

    摘要:對象狀態(tài)中對象的狀態(tài)臨時瞬時狀態(tài)持久化狀態(tài)游離狀態(tài)學(xué)習(xí)的對象狀態(tài)是為了更清晰地知道的設(shè)計思想,以及是一級緩存的基礎(chǔ)當(dāng)然啦,也就一點點知識臨時瞬時狀態(tài)當(dāng)我們直接出來的對象就是臨時瞬時狀態(tài)的該對象還沒有被持久化沒有保存在數(shù)據(jù)庫中不受的管理持久化 對象狀態(tài) Hibernate中對象的狀態(tài): 臨時/瞬時狀態(tài) 持久化狀態(tài) 游離狀態(tài) 學(xué)習(xí)Hibernate的對象狀態(tài)是為了更清晰地知道Hiber...

    AlphaWallet 評論0 收藏0
  • Spring/Hibernate 應(yīng)用性能優(yōu)化的7種方法

    摘要:對于大多數(shù)典型的企業(yè)應(yīng)用而言,其性能表現(xiàn)幾乎完全依賴于持久層的性能。速成法使用批處理對于批處理程序,驅(qū)動程序提供了旨在減少網(wǎng)絡(luò)來回傳輸?shù)膬?yōu)化方法。速成法檢查錯誤的提交間隔如果你使用批處理程序,提交間隔會對性能造成十倍甚至百倍的影響。 對于大多數(shù)典型的 Spring/Hibernate 企業(yè)應(yīng)用而言,其性能表現(xiàn)幾乎完全依賴于持久層的性能。此篇文章中將介紹如何確認(rèn)應(yīng)用是否受數(shù)據(jù)庫約束,同時...

    lavor 評論0 收藏0
  • Hibernate問題集錦

    摘要:查詢照樣寫就行,如下參考問題七中關(guān)于多表連接查詢和返回值集合中對象問題錯誤的查詢語句釋放分析原來是查詢出來的字段并不能自動轉(zhuǎn)換為對象。參考問題八原因原生的語句中返回值為,而語句中的返回值位型的,網(wǎng)上說的主要是兼容而做的。 首先奉上Hibernate3.2 API地址:http://docs.jboss.org/hiberna...Hibernate4.3 API地址:http://do...

    niceforbear 評論0 收藏0
  • Hibernate配置及自定義注冊映射文件

    摘要:一配置屬性詳解可以在各式各樣不同環(huán)境下工作而設(shè)計的因此存在著大量的配置參數(shù)。以簡便操作,多數(shù)配置參數(shù)都有默認(rèn)的配置值也是我們?nèi)粘J褂玫谋仨毱贰? Hibernate (開放源代碼的對象關(guān)系映射框架) Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝, 它將POJO與數(shù)據(jù)庫表建立映射關(guān)系,是一個全自動的orm框架,hibernat...

    coordinate35 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<