1. 程式人生 > >Hibernate基本步驟

Hibernate基本步驟

1.Hibernate基本步驟
1.1.引入jar包
1.2.編寫hibernate.cfg.xml檔案


thread
1.3.建立持久化類,實現Serializable介面
1.4.為持久化類編寫.hbm.xml對映檔案
1.5.中節點引用.hbm.xml檔案
1.6.Java程式碼執行
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session ses = sf.getCurrentSession();
Transaction tx = session.beginTransaction();
ses.save(entity);
tx.commit();

//tx.rollback();
ses.close();
2.按主鍵查詢
Session.get(class,Serializable),如果沒有返回null,立即載入
Session.load(class,Serializable),延遲載入的按主鍵查詢,找不到報異常

主鍵id生成策略:
	assigned:程式負責生成id值,並賦給持久化物件,
	increment:Hibernate自動從該表該列查詢最大值,並且+1
	identity:適合SqlServer、MySQL
	sequence:適合oracle、db2等大型資料庫
	native:自動。hibernate根據資料庫自行決定採用何種策略

3.Session的增、刪、改
save():物件必須沒有id,執行insert語句
saveOrUpdate():物件有id就執行update(),否則執行save()
update():物件必須有id,執行update語句
delete():
evict():把持久化物件從session快取中驅逐出去
close():關閉session
clear():清空session快取中的所有物件
flush():重新整理,把快取中的瞬時、髒資料都提交到資料庫
4.Hibernate中java物件的三種狀態
4.1.瞬時狀態:與資料庫沒有關聯的物件。比如新建立的實體物件、被delete()後的物件
4.2.持久狀態:與資料庫同步的物件。比如執行get()、load()、save()、update()、saveOrUpdate()後的物件
4.3.遊離狀態:曾持久但已經脫管的物件。比如執行evict()、close()、clear()後的物件
5.髒檢查和重新整理快取機制
flush()重新整理快取時
commit()提交事務時
6.更新資料的方法
dynamic-update只更新發生變化的屬性值
merge():遊離物件覆蓋掉與Session快取/資料庫中的資料,實現更新;如果傳入瞬時物件則copy並insert
有id的遊離物件,先select,再update
有id的遊離物件(資料庫中無此id),先select,再insert

	如果session中存在相同持久化標識(identifier)的例項,用使用者給出的物件的狀態覆蓋舊有的持久例項
	如果session沒有相應的持久例項,則嘗試從資料庫中載入,或copy為持久化例項
	最後返回該持久例項
	使用者給出的這個物件沒有被關聯到session上,它依舊是脫管的

7.merge與saveOrUpdate區別:merge會返回一個新的持久化物件,傳入的仍舊是託管的