亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

jsp Hibernate 函數簡介

2020-07-27 21:43:01
字體:
來源:轉載
供稿:網友

1、Configuration/SessionFactory/Session
Configuration實例代表了一個應用程序中Java類型 到SQL數據庫映射的完整集合. Configuration被用來構建一個(不可變的 (immutable))SessionFactory.
SessionFactory是線程安全的,創建代價很高。
Session是非線程安全的,輕量級的。一個Session對應一個JDBC連接,
Session的connection()會獲取Session與之對應的數據庫連接Connection對象。
Session的功能就是操作對象的,這些對象和數據庫表有映射關系。
Session操作的對象是有狀態的,分三類:
自由狀態(transient): 未持久化,未與任何Session相關聯,數據庫表中沒有對應的記錄。
持久化狀態(persistent): 與一個Session相關聯,對應數據庫表中一條記錄。
游離狀態(detached): 已經進行過持久化,但當前未與任何Session相關聯,數據庫表中曾經有一條記錄,現在還有沒有就不知道了。
游離狀態的實例可以通過調用save()、persist()或者saveOrUpdate()方法進行持久化。持久化實例可以通過調用 delete()變成游離狀態。通過get()或load()方法得到的實例都是持久化狀態的。游離狀態的實例可以通過調用 update()、0saveOrUpdate()、lock()或者replicate()進行持久化。游離或者自由狀態下的實例可以通過調用merge()方法成為一個新的持久化實例。
2、Session的save()/persist()/update()/saveOrUpdate()/merge()/delete()方法
save()方法將指定對象保存,插入表中一條數據;
persist()方法將指定對象保存,插入表中一條數據,我還沒發現它和save方法有什么特別之處。
replicate()方法完全使用給定對象各個屬性的值(包括標識id)來持久化給定的游離狀態(Transient)的實體,很暴力啊,其中還需要指定存儲模式(有四種保存策略供選擇)。
update()方法將指定對象更新,更新表中一條數據;
saveOrUpdate()方法接收一個實體對象,根據實體對象的id判斷是否已經存在進行保存或更新操作,這樣保存和更新方法就統一了;
merge()方法將給定的對象的狀態復制到具有相同標識的持久化對象上。
delete()方法將指定對象刪除,刪除表中一條數據;
特別注意:為了使用saveOrUpdate()方法,在由定義映射文件時,通過設定<id>標簽的unsaved-value="null"來判斷執行什么操作: 當id屬性等于unsaved-value的值(在此為null)時,則認為還沒有保存,應該執行保存操作,否則執行更新操作。這樣設定之后,可以使用saveOrUpdate()方法來統一保存和更新的方法。
<id name="id" column="id" type="java.lang.Integer" unsaved-value="null">
<generator class="native"/>
</id>
unsaved-value可以設定的值有四個:
any:總是儲存
none:總是更新
null:id為null時儲存(預設)
valid:id為null或是指定值時儲存
3、Session的get()/load()方法
get()方法會總是查詢實體對象,不存在時候返回null;
load()方法也是獲取一個實體對象,不存在時候拋空指針異常。
4、Session的clear()/evict()方法
clear()方法清除Session級別緩存中的所有實體(包括各種狀態)對象,目的是釋放內存。
evict()方法清除Session級別緩存中的指定的實體(包括各種狀態)對象。
當然,Session關閉后,這些緩存也就不存在了,會等待JVM回收。
5、Session的flush()方法
flush()強制持久化Session緩存中的實體對象。一般還會調用clear()或evict(),目的是趕緊保存,釋放寶貴內存資源。
6、Session的commit()/rollback()方法
commit()方法用于提交Session上的事務,否則工作單元不會對數據庫產生影響。如果執行出現異常(也就是commit()失敗了),則之前的操作取消,執行rollback()可撤消之前的操作。
7、Session的close()/isOpen()/isConnected()/reconnect()方法
close()方法關閉Session所對應數據庫連接,與其相關聯的對象生命周期結束。
isOpen()方法檢查Session是否仍然打開,如果Session已經斷開,則可以使用reconnect(Connection connection)來重新讓Session關聯一個JDBC連接。
isConnected()方法檢查當前Session是否處于連接狀態。
8、Criteria、DetchedCriteria和Query接口
Criteria和Query的實例都是和Session綁定的,其生命周期跟隨著Session結束而結束。
DetchedCriteria實例相當于一個SQL模板,目的是為了復用。其中的getExecutableCriteria(session)方法接收一個Session對象,并與之綁定,返回一個Criteria對象。
9、Hibernate類的initialize()方法
initialize()方法強制Hibernate立即加載指定實體所關聯的對象和集合。Hibernate類中還有其他幾個很有用但不適很常用的方法。
10、映射文件中的lazy屬性
在Hibernate3中,class元素的lazy屬性默認是true,如果不需要,則需要顯示指定為lazy="false",否則,操作load返回的對象會拋異常。另外Hibernate3中還可以為實體屬性指定lazy屬性。
11、JDBC事務和JTA事務
Hibernate本身沒有事務管理功能,它依賴于JDBC或JTA的事務管理功能,在Hibernate配置文件中,如果不顯式指定Transaction的工廠類別屬性hibernate.transaction.factory_class的配置,則默認為JDBC事務:
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>。
在通過SessionFactory獲取到Session后,與Session相關聯的JDBC Connection實例就被設定為false。
特別注意:如果數據庫不支持事務,比如MySQL的MyISAM引擎的表就不支持事務,聲明事務也不會起作用。要使MySQL5的表支持事務,則可以指定表的引擎類型為InnoDB。如果是學習或者研究,目前最好還是使用PostgreSQL 8.3或DB2、Oracle。
JDBC事務總是和一個數據庫連接(或一個Session)相關聯的。
JTA事務則可以跨越多個數據連接(或多個Session),這些連接還可以是不同數據庫的連接,JTA事務一般由容器進行管理。編程只要在多個操作單元的開始和結束定義JTA事務的邊界即可。
特別注意:如果使用了JTA事務,則不能再用在JDBC式的事務來管理每個Session的操作,否則會出錯。為了程序的的通用性,一般來說,都是使用JTA事務來構建應用,這使用任何環境。當然,也可以使用事務代理為每個JDBC的操作方法加入事務控制。這樣也為程序以后移植到JTA容器事務上帶來很大方便。其實現在可以使用Spring的事務管理,與Hibernate結合的非常完美。


PS:persist()方法無返回值,save()方法返回對象標識符。
persist()方法只能保存暫態和持久態的對象,save()方法能保存任何狀態對象。
共同點:調用完方法后,對象的狀態都變成持久態。
get()方法返回對象的實例,而對于load()方法,如果在持久化上下文存在該標識符的對象,就返回該對象的實例,否則返回對象的代理,該代理對象只含有對象標識符。

使用get或load要小心
load可以提高緩存使用效率 但由于是代理 所以在后面操作會更容易出現問題
get是直接訪問db 所以cache的作用就沒了 但會馬上得到結果 麻煩少,但頻繁調用勢必對服務器壓力增加

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区高清在线观看| 亚洲成人激情视频| 性视频1819p久久| 久久久久久一区二区三区| 性亚洲最疯狂xxxx高清| 福利二区91精品bt7086| 日韩欧美一区二区三区久久| 色小说视频一区| 久久久999精品免费| 亚洲电影在线观看| 97久久久免费福利网址| 亚洲天堂免费视频| 亚洲欧美日韩图片| 亚洲精品大尺度| 亚洲欧美一区二区三区情侣bbw| 乱亲女秽乱长久久久| 美女黄色丝袜一区| 欧美日韩一区二区在线播放| 国产成人av网址| 亚洲欧洲日产国码av系列天堂| 国产精品一区二区三区久久久| 亚洲社区在线观看| 国产福利视频一区| 亚洲欧美激情四射在线日| 国产精品男人的天堂| 91精品国产高清久久久久久91| 中文字幕亚洲无线码在线一区| 久久久久久久久久国产| 国语自产精品视频在线看| 国产成人精品国内自产拍免费看| 欧美激情一区二区三区成人| 欧美性猛交99久久久久99按摩| 综合国产在线观看| 欧美日韩综合视频网址| 久久理论片午夜琪琪电影网| 最近的2019中文字幕免费一页| 91精品国产99久久久久久| 国精产品一区一区三区有限在线| 精品久久久久久中文字幕一区奶水| 亚洲欧美激情在线视频| 久久久国产一区| 成人h片在线播放免费网站| 91成人在线播放| 日韩精品高清在线| 国产婷婷成人久久av免费高清| 伊人成人开心激情综合网| 成人激情视频小说免费下载| 亚洲欧美日韩精品久久| 最新国产精品亚洲| 国产精品福利小视频| 日韩久久午夜影院| 国产精品久久久久免费a∨大胸| 精品久久久久久中文字幕| 日韩欧美成人网| 91色在线视频| 亚洲欧美第一页| 92看片淫黄大片欧美看国产片| 日本成人免费在线| 欧美精品做受xxx性少妇| 不卡中文字幕av| 成人精品久久一区二区三区| 2018日韩中文字幕| 久久天天躁狠狠躁夜夜爽蜜月| 成人h猎奇视频网站| 欧美精品久久一区二区| 国产日韩中文字幕在线| 亚洲第一视频网站| 国产精品免费在线免费| 日韩美女视频中文字幕| 亚洲一区二区免费在线| 91国产视频在线| 亚洲精品之草原avav久久| 国产精品mp4| 在线电影欧美日韩一区二区私密| 日韩成人中文字幕| 91在线视频精品| 亚洲欧洲自拍偷拍| 欧美专区第一页| 日韩视频免费在线| 欧美午夜片欧美片在线观看| 日韩av在线资源| 欧美一级高清免费播放| 国产成人精品午夜| 国产日韩精品在线观看| 欧美老女人性生活| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品免费一区| 成人淫片在线看| 亚洲自拍高清视频网站| 国产欧美日韩综合精品| 国产精品国产三级国产aⅴ9色| 九九精品视频在线| 亚洲激情视频网站| 国产精品国产亚洲伊人久久| 岛国视频午夜一区免费在线观看| 亚洲最大福利网站| 亚洲网站在线看| 人人做人人澡人人爽欧美| 国产精品日韩欧美大师| 国产精品国内视频| 国产欧美日韩专区发布| 欧美激情影音先锋| 欧美午夜激情在线| 亚洲人a成www在线影院| 中文字幕欧美视频在线| 成人黄色影片在线| 久久久精品免费视频| 国内成人精品视频| 色妞色视频一区二区三区四区| 91色p视频在线| 国产精品国语对白| 亚洲成av人影院在线观看| 91精品久久久久久久久久久久久久| 亚洲欧美国产va在线影院| 最近2019年好看中文字幕视频| 精品亚洲一区二区三区在线播放| 亚洲精品视频网上网址在线观看| 国产不卡在线观看| 欧美成人手机在线| 久久人人爽人人爽人人片av高清| 伊人男人综合视频网| 亚洲电影av在线| 成人网在线视频| 亚洲福利视频在线| 久久久久久国产精品久久| 欧美激情一区二区三级高清视频| 日韩精品福利网站| 亚洲欧美在线免费观看| 91精品国产99久久久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲成人动漫在线播放| 亚洲人成人99网站| 欧美精品午夜视频| 久久久精品一区| 日韩精品在线免费播放| 18久久久久久| 国产精品人成电影在线观看| 欧美激情一级精品国产| 亚洲电影成人av99爱色| 久国内精品在线| 日韩欧美在线第一页| 成人国产精品久久久久久亚洲| 韩剧1988免费观看全集| 国产欧美婷婷中文| 色综合伊人色综合网站| 亚洲欧美另类在线观看| 亚州av一区二区| 色诱女教师一区二区三区| 97热在线精品视频在线观看| 欧美一区二区三区艳史| 国产视频丨精品|在线观看| 亚洲人成网站777色婷婷| 日韩国产在线看| 亚洲一区二区中文字幕| 亚洲色图第三页| 国产精品无av码在线观看| 精品中文字幕在线| 亚洲国产日韩欧美综合久久| 精品久久久精品| 国产精品国内视频| 一区二区三区视频在线| 国产91色在线| 久久久极品av| 色无极亚洲影院|