Java蜘蛛人 歡迎大家

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

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


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

           

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

           


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

           

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

           

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

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

          映射 一對多的關聯

          需要在 xxx.hbm.xml里添加

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

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

          //例子在HibernateDemo16:

          映射一對多雙向自身關系

            //創建食物類.對象
            Categories foodCategory=new Categories(null,"food",new HashSet());
            //創建水果類.對象
            Categories fruitCategory=new Categories(null,"fruit",new HashSet());
            //創建蔬菜類 對象
            Categories vegetableCategory=new Categories(null,"vegetable",new HashSet());
            //創建蘋果 對象
            Categories appleCategory=new Categories(null,"apple",new HashSet());
            //創建橘子對象
            Categories orangeCategory=new Categories(null,"Orange",new HashSet());
            //創建西紅柿 對象
            Categories tomatoCategory=new Categories(null,"tomato",new HashSet());
            
            
            //建立食物類.和水果類的關系
               foodCategory.getCategorieses().add(fruitCategory);
               fruitCategory.setCategories(foodCategory);
              
               //建立食物跟蔬菜關系
               foodCategory.getCategorieses().add(vegetableCategory);
               vegetableCategory.setCategories(foodCategory);
              
               //建立水果和蘋果的關系
               fruitCategory.getCategorieses().add(appleCategory);
               appleCategory.setCategories(fruitCategory);
              
               //建立水果和橘子的關系
               fruitCategory.getCategorieses().add(orangeCategory);
               orangeCategory.setCategories(fruitCategory);
              
               //建立西紅柿跟水果的關系
               fruitCategory.getCategorieses().add(tomatoCategory);
               tomatoCategory.setCategories(fruitCategory);
              
              //建立蔬菜和西紅柿的關系
               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 查詢
           //創建一個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");


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


          網站導航:
           
          主站蜘蛛池模板: 东台市| 华亭县| 甘南县| 阿拉善盟| 隆德县| 长沙县| 墨玉县| 五常市| 新田县| 南华县| 方山县| 海兴县| 额尔古纳市| 聂荣县| 延川县| 凤庆县| 攀枝花市| 天等县| 古丈县| 浦东新区| 沧州市| 康马县| 襄樊市| 永修县| 英吉沙县| 合水县| 滨海县| 美姑县| 大连市| 澄江县| 鸡东县| 井研县| 汽车| 怀宁县| 陆良县| 武胜县| 闵行区| 芜湖市| 呼伦贝尔市| 内乡县| 鲁山县|