日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate 数据处理

發(fā)布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate 数据处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.Hibernate的配置文件

Hibernate.cfg.xml ?

Dept.hbm.xml

?2.CRUD的方法名稱和參數(shù)類型

???Save(Object obj)

???Delete(Object obj)

???Update(Object obj)

???Get(Class clazz,Serializable ser)

???Load(Class clazz,Serializable ser)

?3.提取工具類

???HibernateUtil{

???????Factory

???????session

??????Public static Session getSession(){

?????????Cfg=new Configuration().configure();

?????????factory= cfg.buildSessionFactory();

?????????Session session=factory.openSession();

?????????Return session;

??????}

???}

4.@Before@After

??注解

5.ORM Object Relational Mapping)對象關(guān)系映射

??對象:Java中的業(yè)務(wù)視圖

??關(guān)系:底層二維表

??映射:小配置

?

6.主鍵生成策略

?Uuid: 32位的16進(jìn)制數(shù)

?

1) sequence

?

編號列生成由底層數(shù)據(jù)庫提供序列,來完成主鍵自增,要求數(shù)據(jù)庫必須支持序列 mysql不支持,oracle支持

?

create sequence myseq; 創(chuàng)建序列

?

insert into customer values (myseq.nextval); 插入數(shù)據(jù)時調(diào)用序列,序列+1

?

2) native

?

采用數(shù)據(jù)庫支持自增策略, mysql就用identity oracle就用sequence

?

策略1) ---> 策略4) 要求數(shù)據(jù)庫主鍵必須為數(shù)字 ,因?yàn)橹挥袛?shù)字才能自增

?

3) uuid

?

32位 唯一字符串, 主鍵使用varchar 類型

?

真實(shí)開發(fā)中,用程序提供uuid

?

4) assigned

?

手動指定主鍵的值,該主鍵一般有實(shí)際意義,例如訂單單號(20160114-A002

?

?

--------------------------------------------------

7.Get()load()的區(qū)別

???Load()沒有使用對象的其他屬性的時候,沒有SQL ?延遲加載

???Get() :沒有使用對象的其他屬性的時候,也生成了SQL ?立即加載

? ? ??①:如果數(shù)據(jù)庫中,沒有 OID 指定的對象。通過 get方法加載,則返回的是一個null;通過load加載,則返回一個代理對象,

? ? ? ? ? ? ? 如果后面代碼如果調(diào)用對象的某個屬性會拋出異常:org.hibernate.ObjectNotFoundException;?

  ②:load 支持延遲加載,get 不支持延遲加載。

??是什么導(dǎo)致了延遲加載?

??解析:是因?yàn)閮?nèi)存中構(gòu)建了代理對象。

??stu.getClass()

?Handler:處理人

???延遲加載原因:代理對象

???一級緩存

???

8.臟檢查

臟檢查:當(dāng)事務(wù)提交時,Hiberante會對Session中持久狀態(tài)的對象進(jìn)行檢測,判斷對象的數(shù)據(jù)是否發(fā)生了改變

??依據(jù):

???為什么要進(jìn)行臟檢查?

???解析:如果對象發(fā)生了改變,就需要將改變更新到數(shù)據(jù)庫中,以確保內(nèi)存中的對象與數(shù)據(jù)庫中的數(shù)據(jù)保持一致。

如何臟檢查?

  解析:當(dāng)一個Dept對象被加入到Session緩存(有人又稱為 一級緩存 ?后者是內(nèi)部緩存)中時,Session會為Dept對象的值類型的屬性復(fù)制一份快照。

? ? ? ? ? ? ? ?當(dāng)Session刷新緩存時,會先進(jìn)行臟檢查,即比較Dept對象的當(dāng)前屬性與它的快照,來判斷Dept對象的屬性是否發(fā)生了變化。

? ? ? 如果發(fā)生了變化,Session會根據(jù)臟對象的最新屬性值來執(zhí)行相關(guān)的SQL語句,將變化更新到數(shù)據(jù)庫中。

? ? ? ? ? ? ? ?Session具有一個緩存,可以管理和跟蹤所有持久化對象,對象和數(shù)據(jù)庫中的相關(guān)記錄對應(yīng)。

?

快照:

9.session(線程非安全) ?SessionFactory(線程安全)

PDF

Session是線程非安全的

線程安全:多個線程訪問同一個資源的時候,

線程非安全:

?

10.Session

??可以簡單理解成相當(dāng)于一個Connection

??Session是持久化對象的容器

??一級緩存(session

如果兩次get()同一個OID,那么第二次不再SQL,說明了一級緩存的

存在性。一級緩存事務(wù)級別的事務(wù)

?Load()get()都可以給緩存放入數(shù)據(jù),和取出數(shù)據(jù)

?

轉(zhuǎn)載于:https://www.cnblogs.com/yangronglin/p/5818250.html

總結(jié)

以上是生活随笔為你收集整理的hibernate 数据处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。