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

正文內(nèi)容

對象序列化和持久化-資料下載頁

2024-09-29 09:02本頁面

【導(dǎo)讀】對象序列化。對象持久化。Languagelevel. Databases. Hibernate. 對象序列化。對象持久化。Languagelevel. Databases. Hibernate. 對象序列化。對象持久化。Languagelevel. Databases. Hibernate. Why. What. How. Socketsoc=newSocket((),8020);OutputStreamo=();("Today'sdate");(newDate());ServerSocketser=null;Socketsoc=null;Stringstr=null;Dated=null;ser=newServerSocket(8020);soc=();InputStreamo=();str=(String)();d=(Date)();(str);(d);(1);//Serializetoday'sdatetoafile.("Today");(newDate());FileInputStreamin=newFileInputStream("tmp");Stringtoday=(String)();Datedate=(Date)();forobjects.thestream.Javaobjects.customization.

  

【正文】 requirements: ?Inheritance ?Typing ?Dynamic binding ?Object versioning ?Schema evolution ?Long transactions ?Locking ?Objectoriented queries 2020/11/4 Institute of Computer Software Nanjing University 72 OODBs examples ? Gemstone ? Itasca ? Matisse ? Objectivity ? ObjectStore ? Ontos ? O2 ? Poet ? Matisse ? Versant ? at ETHZ: OMS Pro 2020/11/4 Institute of Computer Software Nanjing University 73 摘要 ? 對象序列化 ? 對象持久化 ?Language level ?Databases ? Hibernate 2020/11/4 Institute of Computer Software Nanjing University 74 為什么需要對象持久化框架 ? ? OO中輕易實現(xiàn)的對象相同或相等,這樣的關(guān)系在關(guān)系數(shù)據(jù)庫中不存在。 ? OO的一項核心特性是繼承,繼承很重要,因為它允許創(chuàng)建問題的精確模型,同時可以在層次結(jié)構(gòu)中自上而下的共享屬性和行為。而關(guān)系數(shù)據(jù)庫不支持繼承的概念。 ? 對象之間可以輕易的實現(xiàn)一對一,一對多和多對多的關(guān)聯(lián)關(guān)系,而關(guān)系數(shù)據(jù)庫并不理解這些,它只知道外碼指向主碼。 2020/11/4 Institute of Computer Software Nanjing University 75 對象持久化框架 ? 對象關(guān)系映射( Object Relational Mapping,簡稱 ORM)是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。 ?ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中。 ? O/R Mapper則指以 O/R原理設(shè)計的持久化框架( Framework) ?hibernate, ibatis, jdo, etc. 2020/11/4 Institute of Computer Software Nanjing University 76 應(yīng)用分層 ? 當前的現(xiàn)實: ?兩層結(jié)構(gòu) ?三層結(jié)構(gòu) ?N層結(jié)構(gòu) 2020/11/4 Institute of Computer Software Nanjing University 77 2020/11/4 Institute of Computer Software Nanjing University 78 No ORM ? 使用 JDBC 操作數(shù)據(jù)庫,業(yè)務(wù)處理邏輯和數(shù)據(jù)存取邏輯是混雜在一起的。一般基本都是如下幾個步驟: 建立數(shù)據(jù)庫連接,獲得 Connection 對象。 根據(jù)用戶的輸入組裝查詢 SQL 語句。 根據(jù) SQL 語句建立 Statement 對象 或者 PreparedStatement 對象。 用 Connection 對象執(zhí)行 SQL語句,獲得結(jié)果集 ResultSet 對象。 然后一條一條讀取結(jié)果集 ResultSet 對象中的數(shù)據(jù)。 根據(jù)讀取到的數(shù)據(jù),按特定的業(yè)務(wù)邏輯進行計算。 根據(jù)計算得到的結(jié)果再組裝更新 SQL 語句。 再使用 Connection 對象執(zhí)行更新 SQL 語句,以更新數(shù)據(jù)庫中的數(shù)據(jù)。 最后依次關(guān)閉各個 Statement 對象和 Connection 對象。 2020/11/4 Institute of Computer Software Nanjing University 79 No ORM ? 優(yōu)點:運行效率高 ? 缺點:嵌入大量 SQL語句,項目難以維護 ? 主要原因:業(yè)務(wù)處理邏輯和數(shù)據(jù)存取邏輯完全混雜在一塊 2020/11/4 Institute of Computer Software Nanjing University 80 Hibernate ? 它是連接 Java應(yīng)用程序和關(guān)系數(shù)據(jù)庫的中間件 ? 它對 JDBC API進行了封裝,負責 Java對象的持久化 ? 在分層的軟件架構(gòu)中它位于持久化層,封裝了所有數(shù)據(jù)訪問細節(jié),使業(yè)務(wù)邏輯層可以專注于實現(xiàn)業(yè)務(wù)邏輯 ? 持久化層( Persistence Layer),即專注于實現(xiàn)數(shù)據(jù)持久化應(yīng)用領(lǐng)域的某個特定系統(tǒng)的一個邏輯層面,將數(shù)據(jù)使用者和數(shù)據(jù)實體相關(guān)聯(lián) ? 它是一種 ORM映射工具,能夠建立面向?qū)ο蟮挠蚰P秃完P(guān)系數(shù)據(jù)模型之間的映射 2020/11/4 Institute of Computer Software Nanjing University 81 2020/11/4 Institute of Computer Software Nanjing University 82 2020/11/4 Institute of Computer Software Nanjing University 83 對象-關(guān)系 映射 ? 簡單映射 ?將一個類中的一個數(shù)據(jù)成員定為關(guān)鍵字 ?其它數(shù)據(jù)成員為屬性 2020/11/4 Institute of Computer Software Nanjing University 84 2020/11/4 Institute of Computer Software Nanjing University 85 package 。 import 。 import 。 import 。 @Entity public class Honey { @Id @GeneratedValue private Integer id。 private String name。 private String taste。 public Honey() {} public Integer getId() { return id。} public void setId(Integer id) { = id。 } public String getName() { return name。} public void setName(String name) { = name。} public String getTaste() {return taste。} public void setTaste(String taste) { = taste。} @Override public String toString() { return Honey: +getId()+ Name: +getName()+ Taste: +getTaste()。 } } ?xml version= encoding=UTF8? !DOCTYPE hibernatemapping PUBLIC //Hibernate/Hibernate Mapping DTD hibernatemapping package= class name=Honey table=thoney id name=id generator class=increment/ /id property name=name column=fooname/ property name=taste column=bartaste/ /class /hibernatemapping 對象-關(guān)系 映射 ? 繼承: ?方案 1:繼承關(guān)系中每個具體類對應(yīng)一個表 ?子類父類各自映射到各自的關(guān)系上 ?特點:在這種映射方式中,每個子類除了映射自己的屬性外,還需要映射從父類繼承來下的屬性;此方式中關(guān)系數(shù)據(jù)模型完全不支持對象的繼承關(guān)系,不支持多態(tài)關(guān)聯(lián)和多態(tài)查詢 2020/11/4 Institute of Computer Software Nanjing University 86 對象-關(guān)系 映射 ? 繼承 ?方案 2:基類(根類)對應(yīng)一個表 ?所有繼承自一個類的類都映射到一個表上 ?增加一欄標記當前記錄對應(yīng)的對象的類 ?特點:這種映射方式支持多態(tài)關(guān)聯(lián)和多態(tài)查詢,并且能獲得最佳查詢性能,缺點是需要對關(guān)系數(shù)據(jù)模型進行非常規(guī)設(shè)計,在數(shù)據(jù)庫表中加入額外的區(qū)分各個子類的字段,此外,不能為所有子類的屬性對應(yīng)的字段定義 not null約束,無法保證關(guān)系數(shù)據(jù)模型的數(shù)據(jù)完整性 2020/11/4 Institute of Computer Software Nanjing University 87 對象-關(guān)系 映射 ? 繼承 ?方案 3:每個類對應(yīng)一個表 ?父類映射的關(guān)系與子映射的關(guān)系共享相同的主鍵值,父類關(guān)系只記錄本身的屬性,如果要查詢的是子類,則透過外鍵參考從父類表格中取得繼承而來的屬性值。 ?特點:這種映射方式支持多態(tài)關(guān)聯(lián)和多態(tài)查詢,而且符合關(guān)系數(shù)據(jù)模型的常規(guī)設(shè)計規(guī)則,缺點是它的查詢性能不如第二種映射方式。在這種映射方式下,必須通過表的內(nèi)連接或左外連接來實現(xiàn)多態(tài)查詢和多態(tài)關(guān)聯(lián)。 2020/11/4 Institute of Computer Software Nanjing University 88 2020/11/4 Institute of Computer Software Nanjing University 89 2020/11/4 Institute of Computer Software Nanjing University 90 對象-關(guān)系 映射 (繼承) 復(fù)雜度: [方案 1]包含重復(fù)字段; [方案 2]簡單; [方案 3]表較多且之間有外鍵約束; 查詢性能: [方案 1]若查詢父類需查所有子類表; [方案 2]效率高; [方案 3]需要表內(nèi)連接或左外連接; 可維護性: [方案 1]若父類屬性變化需要修改所有子類對應(yīng)的表; [方案 2]只需修改一個表; [方案 3]若某個類屬性變化只修改這個類對應(yīng)的表; 綜上,選擇時,可以參考以下原則: 子類屬性不是非常多時,優(yōu)先考慮 [方案 2],因為其性能最佳。 子類屬性非常多,且對性能要求不是很嚴格時,優(yōu)先考慮 [方案 3]。 2020/11/4 91 對象-關(guān)系 映射 ? Set 映射 ?對象中某屬性是一個集合 ?集合元素僅僅是值,無 identity ?映射到另一個關(guān)系,用外鍵表明其屬于哪個對象 ? List 映射 ?與 Set類似 再加一欄表示位置 2020/11/4 Institute of Computer Software Nanjing University 92 對象-關(guān)系 映射 ? Map映射 ?KeyVal 屬于誰 ? Set 和 Map可排序 2020/11/4 Institute of Computer Software Nanjing University 93 對象-關(guān)系 映射 ? 映射實體關(guān)聯(lián)關(guān)系 ?一對一 ?一對多 ?多對一 ?多對多 2020/11/4 Institute of Computer Software Nanjing University 94 作業(yè) 1. Java語言“ transient” 關(guān)鍵字與對象序列化有何關(guān)系? 2. Java語言中實現(xiàn) Serializable接口和Externalizable接口有何不同? 3. 對象序列化與反序列化時的“ Schema evolution” 問題具體指什么?一般如何處理之? 4. 為何對象持久化要使用數(shù)據(jù)庫?對象模型和關(guān)系模型之間有哪些不匹配?何謂對象關(guān)系映射? 5. 嘗試學(xué)習(xí)、使用 Hibernate。(此題不需提交) 2020/11/4 Institute of Computer Software Nanjing University 95
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1