freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

hibernate4版本-展示頁

2025-01-28 08:07本頁面
  

【正文】 ? ORM的思想:將關(guān)系數(shù)據(jù)庫中表中的記錄映射成為對(duì)象,以對(duì)象的形式展現(xiàn),程序員可以把對(duì)數(shù)據(jù)庫的操作轉(zhuǎn)化為對(duì)對(duì)象的操作。 ? Hibernate 的輕量級(jí) ORM 模型逐步確立了在 Java ORM 架構(gòu)中領(lǐng)導(dǎo)地位,甚至取代復(fù)雜而又繁瑣的 EJB 模型而成為事實(shí)上的 Java ORM 工業(yè)標(biāo)準(zhǔn)。 專注 IT 服務(wù)中國(guó) Hibernate 與 Jdbc 代碼對(duì)比 Hibernate 實(shí)現(xiàn) JDBC 實(shí)現(xiàn) 專注 IT 服務(wù)中國(guó) Hibernate資源 ? 官方網(wǎng)站 ? 專注 IT 服務(wù)中國(guó) eclipse安裝 hibernate 插件 安裝 plugins和 features文件夾中的所有文件到相應(yīng)的 eclipse中 New software Add archive 專注 IT 服務(wù)中國(guó) Hibernate 環(huán)境 ?導(dǎo)入 Hibernate 必須的 jar 包 : ? \lib\required ?加入數(shù)據(jù)庫驅(qū)動(dòng)的 jar 包: ?加入 MySQL 數(shù)據(jù)庫驅(qū)動(dòng)包 專注 IT 服務(wù)中國(guó) Hibernate開發(fā)步驟 *. 2. 創(chuàng)建持久化類 Users 3. 創(chuàng)建對(duì)象 關(guān)系映射文件 4. 通過 Hibernate API 編寫訪問數(shù)據(jù)庫的代碼 1. 創(chuàng)建 Hibernate 配置文件 專注 IT 服務(wù)中國(guó) 創(chuàng)建持久化類 ? 使用標(biāo)準(zhǔn) JavaBean命名 ? 提供一個(gè)無參的構(gòu)造器 ? 提供一個(gè)標(biāo)識(shí)屬性 (identifier property)OID ? 為了在系統(tǒng)中能夠找到所需對(duì)象,需要為每一個(gè)對(duì)象分配一個(gè)唯一的標(biāo)識(shí)號(hào)。 ? 為類的持久化類字段聲明訪問方法 (get/set): Hibernate對(duì)JavaBeans 風(fēng)格的屬性實(shí)行持久化。這就是 Hibernate被稱為低侵入式設(shè)計(jì)的原因 . ? 所有的持久化類( persistent classes)都要求有無參的構(gòu)造器,因?yàn)?Hibernate必須使用Java反射機(jī)制來為你創(chuàng)建對(duì)象。 專注 IT 服務(wù)中國(guó) 創(chuàng)建對(duì)象 關(guān)系映射文件 ? Hibernate 采用 XML 格式的文件來指定對(duì)象和關(guān)系數(shù)據(jù)之間的映射 . 在運(yùn)行時(shí) Hibernate 將根據(jù)這個(gè)映射文件來生成各種 SQL 語句 ? 映射文件的擴(kuò)展名為 . hibernatemapping class name= table=users id name=id type= column name=id / generator class=native / /id property name=account type=string column=account/property property name=password type=string column=password/property /class /hibernatemapping 專注 IT 服務(wù)中國(guó) ? Hibernate 從其配置文件中讀取和數(shù)據(jù)庫連接的有關(guān)信息 , 這個(gè)文件應(yīng)該位于應(yīng)用的 classpath 下 . 指定連接數(shù)據(jù)庫的基本屬性信息 指定數(shù)據(jù)庫所使用的 SQL 方言 指定程序運(yùn)行時(shí)是否在控制臺(tái)輸出 SQL 語句 指定程序運(yùn)行時(shí)是否在數(shù)據(jù)庫自動(dòng)生成數(shù)據(jù)表 指定程序需要關(guān)聯(lián)的映射文件 指定是否對(duì)輸出 SQL 語句進(jìn)行格式化 property name=root/property property name=admin/property property name=/property property name=jdbc: property name=dialect/property property name=show_sqltrue/property property name=format_sqltrue/property property name=update/property mapping resource=/val/hibernate// 創(chuàng)建 Hibernate 配置文件 專注 IT 服務(wù)中國(guó) 4. 通過 Hibernate API 編寫訪問數(shù)據(jù)庫的代碼 Configuration configuration = new Configuration()。 ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(()).build()。 sessionFactory=(serviceRegistry)。 //開啟事務(wù) Transaction transaction=()。 ()。 ()。 ? Java類到 SQL數(shù)據(jù)庫的映射的集合。這些映射是從一些 XML映射文件中編譯得來的。 ? 持久化類與數(shù)據(jù)表的映射關(guān)系( *. 文件) ? 創(chuàng)建 Configuration 的兩種方式 ? 屬性文件( ) : ? Configuration cfg = new Configuration()。 ? Configuration 的 configure 方法還支持帶參數(shù)的訪問: ? File file = new File(“”)。 專注 IT 服務(wù)中國(guó) SessionFactory 接口 ?針對(duì)單個(gè)數(shù)據(jù)庫映射關(guān)系經(jīng)過編譯后的內(nèi)存鏡像,是線程安全的。 ?Hibernate4 新增了一個(gè) ServiceRegistry 接口,所有基于 Hibernate 的配置或者服務(wù)都必須統(tǒng)一向這個(gè) ServiceRegistry 注冊(cè)后才能生效 ?Hibernate4 中創(chuàng)建 SessionFactory 的步驟 專注 IT 服務(wù)中國(guó) Session 接口 ? Session接口對(duì)于 Hibernate開發(fā)人員來說是一個(gè)最重要的接口。 ? Session 是應(yīng)用程序與數(shù)據(jù)庫之間交互操作的一個(gè) 單線程對(duì)象 ,是 Hibernate 運(yùn)作的中心,所有持久化對(duì)象必須在 session 的管理下才可以進(jìn)行持久化操作。Session 對(duì)象有一個(gè) 一級(jí)緩存 ,顯式執(zhí)行 flush 之前,所有的持久層操作的數(shù)據(jù)都緩存在 session 對(duì)象處。 ? 隱藏了 JDBC連接,是 Transaction的工廠 專注 IT 服務(wù)中國(guó) Session 接口 ? 持久化類與 Session 關(guān)聯(lián)起來后就具有了持久化的能力。所有持久層都應(yīng)該在事務(wù)管理下進(jìn)行,即使是只讀操作。 ? 常用方法 : ? mit():提交相關(guān)聯(lián)的 session實(shí)例 ? rollback():撤銷事務(wù)操作 ? begin():開始一個(gè)事務(wù) 專注 IT 服務(wù)中國(guó) Hibernate 配置文件的兩個(gè)配置項(xiàng) : 自動(dòng)生成數(shù)據(jù)庫模式 。 專注 IT 服務(wù)中國(guó) 通過 Session 操縱對(duì)象 專注 IT 服務(wù)中國(guó) Session 概述 ? Session 接口是 Hibernate 向應(yīng)用程序提供的操縱數(shù)據(jù)庫的最主要的接口 , 它 提供了基本的保存 , 更新 , 刪除和 加載 Java 對(duì)象的方法 . ? Session 具有一個(gè)緩存 , 位于緩存中的對(duì)象稱為 持久化對(duì)象 , 它和數(shù)據(jù)庫中的相關(guān)記錄對(duì)應(yīng) . Session 能夠在某些時(shí)間點(diǎn) , 按照緩存中對(duì)象的變化來執(zhí)行相關(guān)的 SQL 語句 , 來同步更新數(shù)據(jù)庫 , 這一過程被稱為刷新緩存 (flush) ? 站在持久化的角度 , Hibernate 把對(duì)象分為 4 種狀態(tài) : 持久化狀態(tài) , 臨時(shí)狀態(tài) , 游離狀態(tài) , 刪除狀態(tài) . Session 的特定方法能使對(duì)象從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài) . 專注 IT 服務(wù)中國(guó) Session 緩存 ? 在 Session 接口的實(shí)現(xiàn)中包含一系列的 Java 集合 , 這些 Java 集合構(gòu)成了 Session 緩存 . 只要 Session 實(shí)例沒有結(jié)束生命周期 , 且沒有清理緩存,則存放在它緩存中的對(duì)象也不會(huì)結(jié)束生命周期。 Users 對(duì)象 引用變量 user 引用變量 user2 Session 緩存 專注 IT 服務(wù)中國(guó) 操作 Session 緩存 Session 緩存 數(shù)據(jù)庫 Users 對(duì)象 users 記錄 flush() Users對(duì)象 Session 緩存 Session 緩存 clear() refresh() 專注 IT 服務(wù)中國(guó) flush 緩存 ? flush: Session 按照緩存中對(duì)象的屬性變化來同步更新數(shù)據(jù)庫 ? 默認(rèn)情況下 Session 在以下時(shí)間點(diǎn)刷新緩存: ? 顯式調(diào)用 Session 的 flush() 方法 ? 當(dāng)應(yīng)用程序調(diào)用 Transaction 的 mit() 方法的時(shí) , 該方法先 flush ,然后在向數(shù)據(jù)庫提交事務(wù) ? 例外情況 1:當(dāng)應(yīng)用程序執(zhí)行一些查詢 (HQL, Criteria)操作時(shí),如果緩存中持久化對(duì)象的屬性已經(jīng)發(fā)生了變化,會(huì)先 flush 緩存,以保證查詢結(jié)果能夠反映持久化對(duì)象的最新狀態(tài) ? flush 緩存的例外情況 2: 如果對(duì)象使用 native 生成器生成 OID, 那么當(dāng)調(diào)用 Session 的 save() 方法保存對(duì)象時(shí) , 會(huì)立即執(zhí)行向數(shù)據(jù)庫插入該實(shí)體的 insert 語句 . ? mit() 和 flush() 方法的區(qū)別: flush 執(zhí)行一系列 sql 語句,但不提交事務(wù); mit 方法先調(diào)用 flush() 方法,然后提交事務(wù) . 意味著提交事務(wù)意味著對(duì)數(shù)據(jù)庫操作永久保存下來。本隔離級(jí)別很少用于實(shí)際應(yīng)用,因?yàn)樗男阅芤膊槐绕渌?jí)別好多少。 ? Read Committed(讀取提交內(nèi)容) 這是大多數(shù)數(shù)據(jù)庫系統(tǒng)的默認(rèn)隔離級(jí)別(但不是 MySQL默認(rèn)的)。這種隔離級(jí)別 也支持所謂的不可重復(fù)讀( Nonrepeatable Read),因?yàn)橥皇聞?wù)的其他實(shí)例在該實(shí)例處理其間可能會(huì)有新的 mit,所以同一 select可能返回不同結(jié)果。不過理論上,這會(huì)導(dǎo)致另一個(gè)棘手的問題:幻讀 ( Phantom Read)。 ? Serializable(可串行化) 這是最高的隔離級(jí)別,它通過強(qiáng)制事務(wù)排序,使之不可能相互沖突,從而解決幻讀問題。在這個(gè)級(jí)別,可能導(dǎo)致大量的超時(shí)現(xiàn)象和鎖競(jìng)爭(zhēng)。 ? 設(shè)置當(dāng)前 mySQL 連接的隔離級(jí)別 : ? set transaction isolation level read mitted。 專注 IT 服務(wù)中國(guó) 在 Hibernate 中設(shè)置隔離級(jí)別 ? JDBC 數(shù)據(jù)庫連接使用數(shù)據(jù)庫系統(tǒng)默認(rèn)的隔離級(jí)別 . 在 Hibernate 的配置文件中可以顯式的設(shè)置隔離級(jí)別 . 每一個(gè)隔離級(jí)別都對(duì)應(yīng)一個(gè)整數(shù) : ? 1. READ UNCOMMITED ? 2. READ COMMITED ? 4. REPEATABLE READ ? 8. SERIALIZEABLE ? Hibernate 通過為 Hibernate 映射文件指定 屬性來設(shè)置事務(wù)的隔離級(jí)別 專注 IT 服務(wù)中國(guó) 持久化對(duì)象的狀態(tài) 站在持久化的角度 , Hibernate 把對(duì)象分為 4 種狀態(tài) : 持久化狀態(tài) , 臨時(shí)狀態(tài) , 游離狀態(tài) , 刪除狀態(tài) . Session 的特定方法能使對(duì)象從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài) . 專注 IT 服務(wù)中國(guó) 持久化對(duì)象的狀態(tài) ? 臨時(shí)對(duì)象( Transient) : ? 在使用代理主鍵的情況下 , OID 通常為 null ? 不處于 Session 的緩存中 ? 在數(shù)據(jù)庫中沒有對(duì)應(yīng)的記錄 ? 持久化對(duì)象 (也叫 ”托管 ”)( Persist): ? OID 不為 null ? 位于 Session 緩存中 ? 若在數(shù)據(jù)庫中已經(jīng)有和其對(duì)應(yīng)的記錄 , 持久化對(duì)象和數(shù)據(jù)庫中的相關(guān)記錄對(duì)應(yīng) ? Session 在 flush 緩存時(shí) , 會(huì)根據(jù)持久化對(duì)象的屬性變化 , 來同步更新數(shù)據(jù)庫 ? 在同一個(gè) Session 實(shí)例的緩存中 , 數(shù)據(jù)庫表中的每條記錄只對(duì)應(yīng)唯一的持久化對(duì)象 專注 IT 服務(wù)中國(guó) 持久化對(duì)象的狀態(tài) ? 刪除對(duì)象 (Removed) ? 在數(shù)據(jù)庫中沒有和其 OID 對(duì)應(yīng)的記錄 ? 不再處于 Session 緩存中 ? 一般情況下 , 應(yīng)用程序不該再使用被刪除的對(duì)象 ? 游離對(duì)象 (也叫 ”脫管 ”) ( Detached): ? OID 不為 null ? 不再處于 Session 緩存中 ? 一般情況需下 , 游離對(duì)象是由持久化對(duì)象轉(zhuǎn)變過來的
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1