免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Hibernate實體規(guī)則、對象狀態(tài)、session緩存、事務

Hibernate實體規(guī)則

javaBean規(guī)范

規(guī)范:
1.屬性私有化,提供get/set方法 - 只有提供了get/set方法的成員變量才是屬性
2.提供無參構造器
3.基本數(shù)據(jù)類型建議使用包裝類
4.必須有主鍵oid對應屬性
5.不能用final修飾 :hibernate使用cglib代理生成代理對象。代理對象是繼承被代理對象。如果類被final修飾,將無法生成代理對象.

主鍵生成策略 generator

		<generator class="主鍵生成策略"><!-- 			<param name="sequence"></param> -->		</generator>

主鍵種類:
1.代理主鍵:業(yè)務無關,對象無關 - 項目開發(fā)中常使用該類型
2.自然主鍵:表中存在非空且唯一的字段,例如身份證號
主鍵生成策略:
1.代理主鍵的生成策略:
identity:數(shù)據(jù)庫來維護,自增長,不需要手動錄入
sequence:數(shù)據(jù)庫維護,seq.nextVal,適用于Oracle數(shù)據(jù)庫的序列方式,需要指定參數(shù)(序列名),不需要手動輸入
increment:Hibernate維護,自增長,不需要錄入,在插入之前會查找數(shù)據(jù)中id最大值, 1后插入
hilo:自增長算法
native:hilo identity sequence 自動檢測
uuid:hibernate維護,32位,id類型設置為varchar(32)以上
2.自然主鍵的生成策略:
assigned:必須手動錄入

Hibernate對象狀態(tài)

1.瞬時狀態(tài):對象沒有id,并且沒有和session關聯(lián)
2.持久化狀態(tài):對象有id,并且和session關聯(lián)
-------------------內(nèi)容發(fā)生修改,在事務提交時,都會同步到數(shù)據(jù)庫
3.游離|托管狀態(tài):對象有id,并且沒有和session關聯(lián)
*ID:和數(shù)據(jù)庫對比,如果數(shù)據(jù)庫中有改id,則為有效ID,數(shù)據(jù)庫中不存在,則為無效id

public void test02() {		Session session = HibernateUtils.openSession();		Transaction tx = session.beginTransaction();		// c - 瞬時狀態(tài)		Customer c = new Customer();		c.setCust_name("新浪");		System.out.println(c);//此時c對象沒有id,并且與session沒有關聯(lián)				session.save(c);//c對象擁有id		// c - 持久化狀態(tài)		System.out.println(c);//c對象有id,并且與session關聯(lián)		tx.commit();		session.close();		// c - 游離狀態(tài)		System.out.println(c);	}
	public void test03() {		Session session = HibernateUtils.openSession();		Transaction tx = session.beginTransaction();				Customer c = session.get(Customer.class, 1l);		// c - 持久化狀態(tài)		System.out.println(c);		tx.commit();		session.close();		// c - 游離狀態(tài)		System.out.println(c);//c有id,但是和session沒有關聯(lián)	}
public void test04() {		Session session = HibernateUtils.openSession();		Transaction tx = session.beginTransaction();				Customer c = session.get(Customer.class, 3l);		// c - 持久化狀態(tài)		System.out.println(c);				session.delete(c); // -- 沒打印				System.out.println(c); 				tx.commit(); // -- 執(zhí)行sql語句		session.save(c);		session.close();		}
public void test05() {		Session session = HibernateUtils.openSession();		Transaction tx = session.beginTransaction();				Customer c = session.get(Customer.class, 2234236l);		// c - 持久化狀態(tài)		System.out.println(c);		c.setCust_linkman("王總");		//		session.update(c);		//處于持久化狀態(tài)對象內(nèi)容發(fā)生修改,在事務提交時,都會同步到數(shù)據(jù)庫		tx.commit();		session.close();	}
	public void test06() {		Session session = HibernateUtils.openSession();		Transaction tx = session.beginTransaction();				// 游離狀態(tài)		Customer c = new Customer();		c.setCust_id(7l);//數(shù)據(jù)庫存在該id,但是c與session沒有關聯(lián)		c.setCust_name("阿里媽媽");//		session.update(c);		session.saveOrUpdate(c);		tx.commit();		session.close();	}

Session緩存

session是有緩存的,


緩存的作用:為了提高查詢效率,Hibernate一級緩存
快照:節(jié)省不必要的update操作,提高效率

load:默認懶加載,使用對象時,彩之星sql語句,變成真正的對象

Hibernate事務

事務

1.事務特性:原子性、一致性、隔離性、持久性
2.事務并發(fā)問題:臟讀1、不可重復讀2、幻讀3
3.事務的隔離級別:讀未提交123、讀已提交23、可重復讀3、串行化

Hibernate中的事務

1.在Hibernate中設置事務隔離級別

<!--設置事務隔離級別  		hibernate.connection.isolation 4(1|2|4|8)		0001 1 讀未提交		0010 2 讀已提交		0100 4 可重復讀		1000 8 串行化		-->				<property name="hibernate.connection.isolation">4</property>

2.在項目中管理事務
1.業(yè)務開始之前打開事務,業(yè)務執(zhí)行之后–提交事務 執(zhí)行過程中出現(xiàn)異常–回滾事務
2.在dao層操作數(shù)據(jù)庫需要用到session對象。在service控制事務也是使用session對象完成. 確保dao層和service層使用的同一個session對象
3.在hibernate中,確保使用同一個session的問題,hibernate已經(jīng)幫我們解決了. 我們開發(fā)人員只需要調(diào)用sf.getCurrentSession()方法即可獲得與當前線程綁定的session對象
注意1: 調(diào)用getCurrentSession方法必須配合主配置中的一段配置

注意2:通過getCurrentSession方法獲得的session對象.當事務提交時,session會自動關閉.不要手動調(diào)用close關閉.

		<!--將session與當前線程綁定 -->		<property name="current_session_context_class">thread</property>

4.crm項目中:
service層:


dao層:

來源:https://www.icode9.com/content-4-428251.html
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
9、領域對象的三種狀態(tài)
Hibernate之緩存使用一
Hibernate4之二級緩存
Hibernate 緩存機制
Hibernate的clear(),flush(),evict()方法詳解
Hibernate的優(yōu)缺點
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服