乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       印度阿三17 2019-08-31

      Hibernate實體規(guī)則

      javaBean規(guī)范

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

      主鍵生成策略 generator

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

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

      Hibernate對象狀態(tài)

      1.瞬時狀態(tài):對象沒有id,并且沒有和session關(guān)聯(lián)
      2.持久化狀態(tài):對象有id,并且和session關(guān)聯(lián)
      -------------------內(nèi)容發(fā)生修改,在事務(wù)提交時,都會同步到數(shù)據(jù)庫
      3.游離|托管狀態(tài):對象有id,并且沒有和session關(guān)聯(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沒有關(guān)聯(lián)
      		
      		session.save(c);//c對象擁有id
      		// c - 持久化狀態(tài)
      		System.out.println(c);//c對象有id,并且與session關(guān)聯(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沒有關(guān)聯(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ā)生修改,在事務(wù)提交時,都會同步到數(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沒有關(guān)聯(lián)
      		c.setCust_name("阿里媽媽");
      //		session.update(c);
      		session.saveOrUpdate(c);
      		tx.commit();
      		session.close();
      	}
      

      在這里插入圖片描述

      Session緩存

      session是有緩存的,
      在這里插入圖片描述
      緩存的作用:為了提高查詢效率,Hibernate一級緩存
      快照:節(jié)省不必要的update操作,提高效率

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

      Hibernate事務(wù)

      事務(wù)

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

      Hibernate中的事務(wù)

      1.在Hibernate中設(shè)置事務(wù)隔離級別

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

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

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

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

      4.crm項目中:
      service層:
      在這里插入圖片描述
      dao層:
      在這里插入圖片描述

      來源:https://www./content-4-428251.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多