Java蜘蛛人 歡迎大家

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

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


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

           

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

           


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

           

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

           

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

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

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

          需要在 xxx.hbm.xml里添加

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

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

          //例子在HibernateDemo16:

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

            //創(chuàng)建食物類.對象
            Categories foodCategory=new Categories(null,"food",new HashSet());
            //創(chuàng)建水果類.對象
            Categories fruitCategory=new Categories(null,"fruit",new HashSet());
            //創(chuàng)建蔬菜類 對象
            Categories vegetableCategory=new Categories(null,"vegetable",new HashSet());
            //創(chuàng)建蘋果 對象
            Categories appleCategory=new Categories(null,"apple",new HashSet());
            //創(chuàng)建橘子對象
            Categories orangeCategory=new Categories(null,"Orange",new HashSet());
            //創(chuàng)建西紅柿 對象
            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);

           


            
          //單項修改
          //  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)建一個Criteria 對象  然后把Ord 加載進去
              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");


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


          網(wǎng)站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 江口县| 于都县| 罗平县| 左贡县| 高阳县| 磴口县| 乌海市| 临城县| 白河县| 武山县| 卢湾区| 康保县| 潞西市| 雷州市| 江山市| 金塔县| 吉水县| 历史| 从化市| 福安市| 盐源县| 南丰县| 镇雄县| 家居| 扎鲁特旗| 永福县| 沿河| 喀喇沁旗| 浠水县| 岑巩县| 墨脱县| 乌兰县| 施甸县| 灵璧县| 吉林省| 陵川县| 昔阳县| 玛沁县| 淄博市| 梨树县| 贡觉县|