偉大的信息管理與信息系統專業,萬惡的信息管理與信息系統專業。說這句話我是有根據的:因為這個專業雄心勃勃的想把自己的子弟培養成全面發展的人才但是結果則不然。兩方面的原因:一部分在學生,但是一部分在這個專業。讓我極其郁悶的就是這個學期我們開設了《財政學》這門課程,天大的噩耗呀(對于我來說,說這種話不到有任何目的性)。索性這門課我立志就沒有想學,在老師甜美的聲音的陪伴下,我又熟悉了一遍hibernate,廢話少說談一下這一下午的收獲吧。
1. hibernate的unsaved-value屬性
unsaved-value是關系到Hibernate對象save or update的配置屬性,它的可選值有三個:null,none,any。
a) null的意思是:如果對象的主鍵是null的話,則對對象采用save()方法,如果對象的主鍵不是null的話,則對對象采用update()的方法。
b) none的意思是:不論哪種情況對象的主鍵都不可能為none值,所以這種情況hibernate采取的方法總是save()。
c) any的意思是:any任何值,當然對象的主鍵不會取任何值之外的值,所以這種情況hibernate采取的方法總是update()。
2. 由此我想到了hibernate的三種狀態的對象:
a) transient---水態的對象:剛剛被創建,沒有持久化的對象,自然不會與數據庫中的任何主鍵對應。
b) persistent---持久化的對象。對象被創建以后經過了持久化,數據庫中有相應的主鍵與之對應。但是還有一個要注意的就是這種對象的狀態保持在session未關閉之前。這是一個和下面的對象狀態容易混的地方。
c) detached---托管的對象。這里的托管是脫離的session對這個對象的管理,這種對象的狀態處在session已經關閉,但是java垃圾回收器還未將此對象回收。
hibernate三種對象狀態我的理解是這樣的,其實我也是懵懵懂懂。希望高人指點啦....
3. hibernate主鍵的選擇:hibernate的主鍵盡量使用不與業務相關的字段,hibernate主鍵類型的選擇也應給盡量使用對象類型(Integer,String....),而不使用基礎類型(int,long....)。
4. hibernate的緩存機制:
一級緩存:一級緩存是session級別的緩存,這種緩存不需要配置,是hibernate自動提供的。
二級緩存:二級緩存是SessionFactory級別的全局緩存,這種緩存是需要配置的。緩存機制對于一個系統來說是非常重要的,這涉及到了一個系統的新能問題。緩存技術也是一門程序員必須掌握的技術,如果緩存處理的好,那么會大大提高系統的性能,相反會降低系統的性能。(水平有限)
其實今天下午上課還看了好多東西呢,但是都是些配置的東西。因為自己的水平不夠不敢多說了,hibernate不是用來使用的東西,而是用來領悟的東西!!努力學習吧....