Java蜘蛛人 歡迎大家

          歡迎大家 來(lái)到我的blog , 如果我身邊的朋友 有什么不懂可以直接來(lái)問(wèn)我 我會(huì)細(xì)心的幫助你的. 如果網(wǎng)絡(luò)上的朋友有什么不懂的 可以加我Java蜘蛛人 QQ48187537
          posts - 54, comments - 192, trackbacks - 0, articles - 1

          dynamic-insert="true" 如果插入的值不為空 他才會(huì)把他列入插入語(yǔ)句中  (作用:節(jié)約資源)


          <hibernate-mapping package="mypack"> <class>元素中定義的類來(lái)自mypack包

           

          <property name="sex" access="field"/> 不會(huì)直接調(diào)用age的set,get方法. 避免get,set方法里的邏輯值.

           


          <class name="xxx.xxx" table="xxxx" select-before-update=true> 如果設(shè)置成true  如果不經(jīng)常修改java 對(duì)象的屬性 就設(shè)為true   當(dāng)對(duì)象沒(méi)有被修改的時(shí)候 他不會(huì)執(zhí)行update 語(yǔ)句  select-before-update=true 可以避免update 盲目的觸發(fā)一個(gè)觸發(fā)器

           

          saveOrUpdate 如果是臨時(shí)對(duì)象就用save  如果是游離對(duì)象才建議用saveOrUpdate 如果傳遞進(jìn)來(lái)的是持久化狀態(tài)  就直接返回
          他會(huì)自動(dòng)判斷是游離狀態(tài)還是臨時(shí)狀態(tài)  如果oid=null version=null等.那就是臨時(shí)狀態(tài).

           

          hibernate與觸發(fā)器 協(xié)同工作 ..  假如save 一個(gè)數(shù)據(jù) 會(huì)觸發(fā)一個(gè)觸發(fā)器 那就會(huì)導(dǎo)致 session緩存的內(nèi)容和數(shù)據(jù)庫(kù)的內(nèi)容不協(xié)調(diào)(不一樣)
           解決方法 : 在save后 調(diào)用flush()清除緩存 然后調(diào)用refresh() 重新到數(shù)據(jù)庫(kù)當(dāng)中加載剛才被保存的xxxx對(duì)象
          select-before-update=true 可以避免update 盲目的觸發(fā)一個(gè)觸發(fā)器

          <set batch-size="3">  批量查詢  3句查詢語(yǔ)句 一起初始化..

          映射 一對(duì)多的關(guān)聯(lián)

          需要在 xxx.hbm.xml里添加

          <many-to-one
          name="customer"  //用戶表的實(shí)例
          columb="CUSTOMER_ID"
          class="mypack.Customer"
          cascade="save-update"  保存或者更新customer的臨時(shí)對(duì)象
          not-null="true"
          />

            //建立用戶表和訂單表外鍵的映射

          //例子在HibernateDemo16:

          映射一對(duì)多雙向自身關(guān)系

            //創(chuàng)建食物類.對(duì)象
            Categories foodCategory=new Categories(null,"food",new HashSet());
            //創(chuàng)建水果類.對(duì)象
            Categories fruitCategory=new Categories(null,"fruit",new HashSet());
            //創(chuàng)建蔬菜類 對(duì)象
            Categories vegetableCategory=new Categories(null,"vegetable",new HashSet());
            //創(chuàng)建蘋果 對(duì)象
            Categories appleCategory=new Categories(null,"apple",new HashSet());
            //創(chuàng)建橘子對(duì)象
            Categories orangeCategory=new Categories(null,"Orange",new HashSet());
            //創(chuàng)建西紅柿 對(duì)象
            Categories tomatoCategory=new Categories(null,"tomato",new HashSet());
            
            
            //建立食物類.和水果類的關(guān)系
               foodCategory.getCategorieses().add(fruitCategory);
               fruitCategory.setCategories(foodCategory);
              
               //建立食物跟蔬菜關(guān)系
               foodCategory.getCategorieses().add(vegetableCategory);
               vegetableCategory.setCategories(foodCategory);
              
               //建立水果和蘋果的關(guān)系
               fruitCategory.getCategorieses().add(appleCategory);
               appleCategory.setCategories(fruitCategory);
              
               //建立水果和橘子的關(guān)系
               fruitCategory.getCategorieses().add(orangeCategory);
               orangeCategory.setCategories(fruitCategory);
              
               //建立西紅柿跟水果的關(guān)系
               fruitCategory.getCategorieses().add(tomatoCategory);
               tomatoCategory.setCategories(fruitCategory);
              
              //建立蔬菜和西紅柿的關(guān)系
               tomatoCategory.setCategories(vegetableCategory);
               vegetableCategory.getCategorieses().add(tomatoCategory);
              
               fruitCategory.getCategorieses().remove(tomatoCategory);
              
                 Session session=HBF.getSession();
                 session.save(foodCategory);
                 session.beginTransaction().commit();
                 session.close();

           

           

           


          //例子在HibernateDemo14:

            //雙向修改
            Pp pp1=new Pp();
            pp1.setPname("aaaaaa");
            pp1.setCid(new Long(27));
            Catelog cla=new Catelog();
            cla.setCname("bbbbb");
            cla.setId(new Long(16));
               pp1.setCatelog(cla);

           


            
          //單項(xiàng)修改
          //  Catelog cla=new Catelog();
          //  cla.setCname("1111111111");
          //  cla.setId(new Long(16));
          //   dao.session.saveOrUpdate(cla);
            
               CPDAO dao=new CPDAO();
                dao.session.update(pp1);
               dao.session.beginTransaction().commit();
               dao.closeSession();

           

           

          //例子在HibernateDemo14:
          查詢:
            String sql="from Catelog c where c.id=2";
               Query q=dao.session.createQuery(sql);
              
               Catelog cla=  (Catelog)q.uniqueResult();
              
                Set<Pp> set= cla.getPps();
               
               Iterator<Pp> it = set.iterator();
               while(it.hasNext())
               {
                Pp p=it.next();
                System.out.println(p.getPname()+"   "+p.getCid());
               }

           

               
          //例子在HibernateDemo14:

           //從表查詢
               String sql="from Pp p where p.catelog.id=16";
               Query q=dao.session.createQuery(sql);
              
               List<Pp> list = q.list();
              
              for(Iterator<Pp> it = list.iterator();it.hasNext();)
              {
               Pp p=it.next();
               System.out.println(p.getCatelog().getCname()+"     "+p.getPname());
              }
              
               dao.session.close();
           }

           


          HQL 查詢

           public List QueryName(String name)
           {
            return session.createQuery("from Ord as c where Ord_number=:sname")
           .setString("sname",name).list(); 
           }

            然后  List  list=dao.QueryName("b");


          QBC 查詢
           //創(chuàng)建一個(gè)Criteria 對(duì)象  然后把Ord 加載進(jìn)去
              Criteria criteria=dao.session.createCriteria(Ord.class);
              Criterion criterion1=Expression.like("ord_number","T%");
             
             
              criteria.add(criterion1);
             
              List result=criteria.list();
                

          QBE  查詢

           

                Ord entity=new Ord();
                entity.setOrdNumber("Linda_Ord001");
              Criteria criteria=dao.session.createCriteria(Ord.class);
             
              Criterion criterion=Example.create(entity);
             
              criteria.add(criterion);
             
              List result=criteria.list();

           

          HQL 排序
           Query q=dao.session.createQuery("from Ord as o order by ord_number");


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 梧州市| 乌鲁木齐市| 浮山县| 启东市| 于田县| 大名县| 淮阳县| 五指山市| 张家口市| 浏阳市| 织金县| 扎囊县| 和平县| 安西县| 五家渠市| 安图县| 哈尔滨市| 福建省| 怀安县| 八宿县| 浮梁县| 闵行区| 晋城| 荔波县| 图们市| 泰顺县| 香港| 铜梁县| 肥乡县| 赤壁市| 永登县| 九台市| 博白县| 巴里| 墨竹工卡县| 铅山县| 湖南省| 新田县| 上思县| 蒙自县| 晋宁县|