锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲大香人伊一本线,亚洲日韩人妻第一页,国产精品亚洲综合一区http://m.tkk7.com/fangts/category/28198.htmlJAVAzh-cnMon, 20 Jul 2009 22:13:21 GMTMon, 20 Jul 2009 22:13:21 GMT60Hibernate QBC鏌ヨ http://m.tkk7.com/fangts/archive/2009/07/19/287342.html鏂規稕鍗?/dc:creator>鏂規稕鍗?/author>Sun, 19 Jul 2009 08:12:00 GMThttp://m.tkk7.com/fangts/archive/2009/07/19/287342.htmlhttp://m.tkk7.com/fangts/comments/287342.htmlhttp://m.tkk7.com/fangts/archive/2009/07/19/287342.html#Feedback0http://m.tkk7.com/fangts/comments/commentRss/287342.htmlhttp://m.tkk7.com/fangts/services/trackbacks/287342.htmlHibernate QBC鏌ヨ
            QBC鏌ヨ錛?
               QBC鏌ヨ灝辨槸閫氳繃浣跨敤Hibernate鎻愪緵鐨凲uery By Criteria
            API鏉ユ煡璇㈠璞★紝榪欑API灝佽浜哠QL璇彞鐨勫姩鎬佹嫾瑁咃紝瀵規煡璇㈡彁渚涗簡鏇村姞闈㈠悜瀵硅薄鐨勫姛鑳芥帴鍙c傛垜浠湅涓嬮潰鐨勭ず渚嬬▼搴忥細
            Criteria criteria=session.createCriteria(User.class);
            criteria.add(Expression.eq(“name”,”zx”));
            criteria.add(Expression.eq(“age”,new Integer(27));
            List list=criteria.list();
            褰撴墽琛宑riteria.list()鏃朵細鐢熸垚綾諱技榪欐牱鐨凷QL璇彞錛歋elect * from user where name=’zx’
            and
            age=27;鎵浠ュ湪榪欓噷鎴戜滑鍙互鐪嬪嚭錛孋riteria瀹為檯涓婃槸涓涓煡璇㈠鍣紝瀹冨鏌ヨ鏉′歡琛ㄨ揪寮忕殑娣誨姞榪涜浜嗗皝瑁咃紝鍏蜂綋鐨勬煡璇㈡潯浠舵槸閫氳繃add()鏂規硶娣誨姞鐨勶紝鑰屼笖鍏蜂綋鐨勬煡璇㈡潯浠剁殑琛ㄨ揪寮忚繍綆楁槸閫氳繃Expression鎸囧畾鐨勩侶ibernate鍦ㄨ繍琛屾湡浼氭牴鎹瓹riteria鎸囧畾鐨勮〃杈懼紡鏉′歡鏉ユ坊鍔犳煡璇㈡潯浠訛紝騫朵笖鐢熸垚鏌ヨ璇彞銆傝繖縐嶆柟寮忛潪甯哥鍚圝ava浠ュ強鎵鏈夐潰鍚戝璞$紪紼嬭璦鐨勭紪紼嬫柟寮忥紝鎵浠ュぇ澶氭暟鐨勬寔涔呭眰妗嗘灦閮芥彁渚涗簡瀵硅繖縐嶆柟寮忔煡璇㈢殑鏀寔銆備笅闈㈡垜浠瑙h繖縐嶆煡璇㈡柟寮忕殑鍚勪釜鎶鏈粏鑺傘?
            1銆丆riteria鏌ヨ琛ㄨ揪寮忥細
            姝e鎴戜滑鎵瑙侊紝Expression瀵規煡璇㈣鍙ョ殑琛ㄨ揪寮忚繘琛屼簡灝佽鍜岄檺鍒訛紝涓嬭〃鍒楀嚭浜咵xpression鎵鏈夌殑鏂規硶錛屼互鍙婃瘡涓柟娉曟墍瀵瑰簲鐨勬煡璇㈣〃杈懼紡鍙婂叾闄愬埗銆?
                  鏂規硶鎻忚堪
                  Expression.eq瀵瑰簲SQL鐨?#8220;field=value”琛ㄨ揪寮?
                  濡傦細Expression.eq(“name”,”zx”);
                  Expression.allEq鏂規硶鐨勫弬鏁頒負涓涓狹ap綾誨瀷瀵硅薄錛屽寘鍚涓悕/鍊煎瀵瑰簲鍏崇郴錛岀浉褰撲簬澶氫釜Expression.eq鐨勫彔鍔?
                  Expression.gt瀵瑰簲SQL鐨?#8220;field>value”琛ㄨ揪寮?
                  Expression.ge瀵瑰簲SQL鐨?#8220;field>=value”琛ㄨ揪寮?
                  Expression.lt瀵瑰簲SQL鐨?#8220;field”琛ㄨ揪寮?
                  Expression.le瀵瑰簲SQL鐨?#8220;field<=value”琛ㄨ揪寮?
                  Expression.between瀵瑰簲SQL璇彞鐨刡etween琛ㄨ揪寮忥紝濡傦細鏌ヨ騫撮緞鍦?1涓?7宀佷箣闂寸殑鐢ㄦ埛錛屽彲浠ュ啓鎴怑xpression.between(“age”,new
                  Integer(21),new Integer(27));
                  Expression.like瀵瑰簲SQL璇彞鐨?#8221;field like value”琛ㄨ揪寮?
                  Expression.in瀵瑰簲SQL璇彞鐨?#8220;field in(……)”琛ㄨ揪寮?
                  Expression.eqProperty鐢ㄤ簬姣旇緝涓や釜灞炴у鹼紝瀵瑰簲”field=field”SQL琛ㄨ揪寮?
                  Expression.gtProperty鐢ㄤ簬姣旇緝涓や釜灞炴у鹼紝瀵瑰簲”field>field”SQL琛ㄨ揪寮?
                  Expression.geProperty鐢ㄤ簬姣旇緝涓や釜灞炴у鹼紝瀵瑰簲”field>=field”SQL琛ㄨ揪寮?
                  Expression.ltProperty鐢ㄤ簬姣旇緝涓や釜灞炴у鹼紝瀵瑰簲”field琛ㄨ揪寮?
                  Expression.leProperty鐢ㄤ簬姣旇緝涓や釜灞炴у鹼紝瀵瑰簲”field<=field”SQL琛ㄨ揪寮?
                  Expression.and瀵瑰簲SQL璇彞鐨凙nd鍏崇郴緇勫悎錛屽錛欵xpression.and(Expression.eq(“name”,”zx”),Expression.eq(“sex”,”1”));
                  Expression.or瀵瑰簲SQL璇彞鐨凮r鍏崇郴緇勫悎錛屽錛欵xpression.or(Expression.eq(“name”,”zx”),Expression.eq(“name”,”zhaoxin”));
                  Expression.sql浣滀負琛ュ厖榪欎釜鏂規硶鎻愪緵浜嗗師鐢烻QL璇彞鏌ヨ鐨勬敮鎸侊紝鍦ㄦ墽琛屾椂鐩存帴閫氳繃鍘熺敓SQL璇彞榪涜闄愬畾錛屽錛欵xpression.sql(“lower({alias}.name)
                  like (?)”,“zhao%”,Hibernate.STRING) ;鍦ㄨ繍琛屾椂{ alias
                  }灝嗕細鐢卞綋鍓嶆煡璇㈡墍鍏寵仈鐨勫疄浣撶被鍚嶆浛鎹紝()涓殑?灝嗕細鐢?#8221;zhao%”鏇挎崲錛屽茍涓旂被鍨嬬敱Hibernate.STRING鎸囧畾銆?

            娉ㄦ剰錛欵xpression鍚勬柟娉曚腑鐨勫睘鎬у弬鏁幫紙鍚勬柟娉曚腑鐨勭涓涓弬鏁幫級鎵鎸囧畾鐨勫睘鎬у悕縐幫紙濡傦細name,sex錛夛紝騫朵笉鏄暟鎹簱琛ㄤ腑鐨勫疄闄呭瓧孌靛悕縐幫紝鑰屾槸瀹炰綋瀵硅薄涓槧灝勫疄闄呮暟鎹〃瀛楁鐨勭被灞炴у悕縐般?
            
            2銆佺ず渚嬫煡璇細
              
            紺轟緥鏌ヨ鏄氳繃Example綾繪潵瀹屾垚鐨勶紝Example綾誨疄鐜頒簡Criterion鎺ュ彛錛屽彲浠ョ敤浣淐riteria鏌ヨ鏉′歡錛孍xample綾葷殑浣滅敤鏄細鏍規嵁宸叉湁瀵硅薄錛屾煡璇㈠睘鎬у間笌涔嬬浉鍚岀殑鍏朵粬瀵硅薄銆傚涓嬩唬鐮佹墍紺猴細
            Criteria criteria=session.createCriteria(User.class);
            User exampleuser=new User(“zx”);
            criteria.add(Example.create(exampleuser));
            List list=criteria.list();
            for(int i=0;i
               User user=(User)list.get(i);
               System.out.println(user.getName()+”\n”);
            }
            涓婅堪浠g爜涓璘ser exampleuser=new
            User(“zx”);criteria.add(Example.create(exampleuser));涓ゅ彞鐩稿綋浜?
            criteria.add(Expression.eq(“name”,”zx”));鍥犳浼氱敓鎴愮被浼煎涓嬬殑SQL璇彞錛?
            select * from user where name=’zx’;鍦ㄤ笂闈㈢殑浠g爜涓璭xampleuser縐頒負紺轟緥瀵硅薄銆?
             
            鍦℉ibernate涓槦紺轟緥鏌ヨ錛岄粯璁ゆ儏鍐典笅浼氭帓闄ゆ帀紺轟緥瀵硅薄涓睘鎬у間負絀虹殑灞炴э紝榪樺彲浠ヨ皟鐢‥xample.excludeNone錛堟帓闄ょ┖涓插鹼級/excludeZeros錛堟帓闄ら浂鍊鹼級錛屾垨鑰呰皟鐢‥xample.excludeProperty鏂規硶鏉ユ寚瀹氭帓闄ょ壒瀹氬睘鎬с?
              
            紺轟緥鏌ヨ涓昏搴旂敤浜庣粍鍚堟煡璇腑錛屾瘮濡傛牴鎹敤鎴瘋緭鍏ョ殑鏌ヨ鏉′歡鍔ㄦ佺敓鎴愭渶緇堢殑鏌ヨ璇彞錛岄氳繃浣跨敤紺轟緥鏌ヨ錛屽彲浠ラ伩鍏嶇敱浜庢煡璇㈡潯浠惰繃澶氳屽啓鐨勫ぇ閲廼f鍒ゆ柇璇彞銆?
            3銆佸鍚堟煡璇細
            澶嶅悎鏌ヨ涓昏鏄鐞嗭紝鍏鋒湁鍏寵仈鍏崇郴鐨勪袱涓疄浣撴庢牱榪涜鍏寵仈鏌ヨ錛屾瘮濡俇ser瀹炰綋瀵硅薄涓嶢ddres瀹炰綋瀵硅薄鍏鋒湁涓瀵瑰鐨勫叧鑱斿叧緋伙紝鎴戜滑鍙互濡備笅鏋勯犵鍚堟煡璇細
            Criteria criteria=session.createCriteria(User.class);
               Criteria addcriteria=criteria.createCriteria(“addresses”);(1)
               addcriteria.add(Express.like(“address”,”%tianjin%”));
              List list=criteria.list();
               for(int i=0;i
                 User user=(User)list.get(i);
                 System.out.println(user.getName()+”\n”);
                 Set addresses=user.getAddresses();
                 Iterator it=addresses.iterator();
                 while(it.hasNext(){
                  Address address=(Address)it.next();
                  System.out.println(address.getAddress()+”\n”);
                 }
               }
            褰撴墽琛屽埌浜嗭紙1錛夊鏃訛紝琛ㄦ槑瑕侀拡瀵筓ser瀵硅薄鐨刟ddresses灞炴ф坊鍔犳柊鐨勬煡璇㈡潯浠訛紝鍥犳褰撴墽琛宑riteria.list()鏃訛紝Hibernate浼氱敓鎴愮被浼煎涓嬬殑SQL璇彞錛?
            Select * from user inner join address on user.id=address.id where
            address.address like ‘%shanghai%’;
            姝e鎴戜滑鎵瑙侊紝鎴戜滑鍙互閫氳繃鍚慍riteria涓坊鍔犱繚瀛樺叧鑱斿璞$殑闆嗗悎灞炴э紙addresses灞炴т繚瀛樹笌User瀵硅薄鐩稿叧鑱旂殑Address瀵硅薄錛夛紝鏉ユ瀯閫犲鍚堟煡璇紝鍦ㄦ暟鎹簱涓绔槸閫氳繃鍐呰繛鎺ユ煡璇㈡潵瀹炵幇銆?
            
            
            
            4銆丆riteria鐨勯珮綰х壒鎬э細
            A銆侀檺瀹氳繑鍥炶褰曟潯鏁幫細
             鎴戜滑鍙互閫氳繃鍒╃敤Criteria.setFirstResult/setMaxResult鏂規硶鏉ラ檺瀹氳繑鍥炴煇涓嬈℃煡璇㈢殑璁板綍鏁幫紝濡備笅浠g爜錛?
            Criteria criteria=session.createCriteria(User.class);
            criteria.setFirstResult(100);
            criteria.setMaxResult(200);
            閫氳繃浠ヤ笂浠g爜鍙互璁懼畾璇ユ鏌ヨ榪斿洖user琛ㄤ腑鐨勪粠絎?00鏉¤褰曞紑濮嬬洿鍒扮200鏉¤褰曠粨鏉熺殑100鏉¤褰曘?
            B銆佸鏌ヨ緇撴灉榪涜鎺掑簭錛?
             鍙氳繃浣跨敤net.sf.hibernate.expression.Order綾誨彲浠ュ鏌ヨ緇撴灉闆嗚繘琛屾帓搴忥紝濡備笅闈唬鐮侊細
            Criteria criteria=session.createCriteria(User.class);
            criteria.add(Expression.eq(“groupid”,”2”);
            criteria.addOrder(Order.asc(“name”));
            criteria.addOrder(Order.desc(“groupid”));
            List list=criteria.list();

            閫氳繃浣跨敤Order綾葷殑asc()/desc()鏂規硶錛屽彲浠ユ寚瀹氶拡瀵規煇涓瓧孌電殑鎺掑簭閫昏緫錛屽鏋滄墽琛屼笂榪頒唬鐮侊紝浼氱敓鎴愮被浼煎涓嬬殑SQL璇彞錛?
            Select * from user where groupid=’2’ order by name asc,groupid desc
            C銆佸垎緇勪笌緇熻錛?
              
            鍦℉ibernate3涓紝瀵笴riteria鍙堝娣諱簡鏂板姛鑳斤紝鍙互鏀寔鍒嗙粍涓庣粺璁″姛鑳斤紝鍦℉ibernate3涓鍔犱簡Projections浠ュ強ProjectionList綾伙紝榪欎袱涓被瀵瑰垎緇勪笌緇熻鍔熻兘榪涜浜嗗皝瑁咃紝濡備笅浠g爜錛?
            Criteria criteria=session.createCriteria(User.class);
            criteria.setProjection(Projections.groupProperty(“age”));(1)
            List list=criteria.list();
            Iterator it=list.iterator();
            while(it.hasNext()){
             System.out.println(it.next());
            }
            閫氳繃錛?錛夊鐨勪唬鐮侊紝鎴戜滑閫氳繃Projections綾繪寚瀹氫簡鐢ㄤ簬鍒嗙粍鐨勭洰鏍囧睘鎬э紝褰撹繘琛屾绱㈡椂Hibernate浼氱敓鎴愮被浼煎涓嬬殑SQL璇彞錛?
            Select age from user group by age;
            榪樺彲浠ラ氳繃浣跨敤Projections鐨刟vg()/rowCount()/count()/max()/min()/countDistinct()絳夋柟娉曟潵瀹炵幇緇熻鍔熻兘錛屽涓嬮潰鐨勪唬鐮佺ず渚嬶細
            Criteria criteria=session.createCriteria(User.class);
            criteria.setProjection(Projections.avg(“age”));(1)
            List list=criteria.list();
            Iterator it=list.iterator();
            while(it.hasNext()){
             System.out.println(it.next());
            }
            閫氳繃錛?錛夊鐨勪唬鐮侊紝鎴戜滑瀹炵幇浜嗗鐢ㄦ埛騫沖潎騫撮緞鐨勭粺璁★紝褰撹繘琛屾绱㈡椂錛孒ibernate浼氱敓鎴愮被浼煎涓嬬殑SQL璇彞錛?
            Select avg(age) from user;
            鍙﹀錛屽湪SQL璇彞涓殑澶氭潯浠跺垎緇勪笌緇熻鍔熻兘錛屽彲浠ュ埄鐢≒rojectionList綾繪潵瀹炵幇錛屽涓嬮潰浠g爜鎵紺猴細
            Criteria criteria=session.createCriteria(User.class);
            ProjectionList prolist=Projections.projectionList();
            prolist.add(Projections.groupProperty(“age”));
            prolist.add(Projections.rowCount());
            criteria.setProjection(prolist);
            List list=criteria.list();

            閫氳繃浠ヤ笂浠g爜錛屽疄鐜頒簡瀵逛笉鍚屽勾榫勪漢鍛樻暟閲忕殑鍒嗙粍緇熻錛屽綋榪涜媯绱㈡椂錛孒ibernate浼氱敓鎴愮被浼煎涓嬬殑SQL璇彞錛?
            Select age,count(*) from user group by age;
            5銆丏etachedCriteria:
            鍦℉ibernate2涓紝Criteria瀹炰緥鏄笌鍒涘緩瀹冪殑Session瀹炰緥鍏鋒湁鐩稿悓鐨勭敓鍛藉懆鏈熺殑錛屼篃灝辨槸璇達紝Session瀹炰緥鏄畠鎵鍒涘緩鐨凜riteria瀹炰緥鐨勫涓伙紝褰揝ession鍏抽棴鏃訛紝瀵勭敓浜嶴ession瀹炰緥鐨凜riteria閮藉皢澶辨晥銆傝繖灝卞Criteria鐨勯噸鐢ㄩ犳垚浜嗗洶闅撅紝涓轟簡瀹炵幇Criteria瀹炰緥鐨勯噸鐢紝鍦℉ibernate3涓彁渚涗簡涓涓狣etachedCriteria綾伙紝DetachedCriteria瀹炰緥鐨勭敓鍛藉懆鏈熶笌Session瀹炰緥鐨勭敓鍛藉懆鏈熸棤鍏籌紝鎴戜滑鍙互鍒╃敤DetachedCriteria瀵逛竴浜涘父鐢ㄧ殑Criteria鏌ヨ鏉′歡榪涜鎶界錛屽綋闇瑕佽繘琛屾绱㈡椂鍐嶄笌Session瀹炰緥鍏寵仈錛屼粠鑰岃幏寰楄繍琛屾湡鐨凜riteria瀹炰緥銆傚涓嬮潰鐨勪唬鐮佹墍紺猴細
               DetachedCriteria dc= DetachedCriteria.forClass(User.class);
               dc.add(Expression.eq(“name”,”zhaoxin”));
               dc.add(Expression.eq(“sex”,”1”));
               Criteria criteria=dc.getExecutableCriteria(session);
               Iterator it=criteria.list().iterator();
               while(it.hasNext()){
                 User user=(User)it.next();
                 System.out.println(user.getName());
               }
            
            姝e鎴戜滑鎵瑙侊紝DetachedCriteria鐨勭敓瀛樺懆鏈熶笌session瀹炰緥鏃犲叧錛屽綋闇瑕佽繘琛屾绱㈡椂錛岄氳繃getExecutableCriteria(session)鏂規硶錛屼笌褰撳墠鐨凷ession瀹炰緥鍏寵仈騫惰幏寰楄繍琛屾湡鐨凜riteria瀹炰緥錛屽畬鎴愭绱€?
            DetachedCriteria涔熷彲浠ョ敤浜庡畬鎴愬瓙鏌ヨ鍔熻兘錛屽涓嬩唬鐮佹墍紺猴細
            DetachedCriteria dc= DetachedCriteria.forClass(User.class);
            dc.setProjection(Projections.avg(“age”));
            Criteria criteria=session.createCriteria(User.class);
            criteria.add(Subqueries.propertyGt(“age”,dc));
            List list=criteria.list();

            閫氳繃Subqueries綾伙紝瀹炵幇浜嗘坊鍔犲瓙鏌ヨ鐨勫姛鑳斤紝鎴戜滑灝咲etachedCriteria鎵璁懼畾鐨勬煡璇㈡潯浠訛紝褰撲綔瀛愭煡璇㈡坊鍔犲埌浜嗚繍琛屾椂Criteria瀹炰緥鐨勬煡璇㈡潯浠朵腑錛屽綋鎵ц媯绱㈡椂Hibernate浼氱敓鎴愮被浼煎涓嬬殑SQL璇彞錛?
            Select * from user where age>(select avg(age) from user group by
            age);


]]>
鐢╤ibernate search澧為噺绱㈠紩http://m.tkk7.com/fangts/archive/2008/01/09/174020.html鏂規稕鍗?/dc:creator>鏂規稕鍗?/author>Wed, 09 Jan 2008 07:14:00 GMThttp://m.tkk7.com/fangts/archive/2008/01/09/174020.htmlhttp://m.tkk7.com/fangts/comments/174020.htmlhttp://m.tkk7.com/fangts/archive/2008/01/09/174020.html#Feedback0http://m.tkk7.com/fangts/comments/commentRss/174020.htmlhttp://m.tkk7.com/fangts/services/trackbacks/174020.html

package cn.search.pojo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.Store;

@Entity
@Table(name = "search_foo")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Indexed(index = "search_foo")
public class Foo implements Serializable {

 /**
  *
  */
 private static final long serialVersionUID = 1L;
 @Id
 @DocumentId
 @Field(name = "id", index = Index.TOKENIZED, store = Store.YES)
 private Integer id;

 @Column(nullable = false, length = 200)
 @Field(name = "name", index = Index.TOKENIZED, store = Store.YES)
 private String name;

 @Column(nullable = false, length = 200)
 @Field(name = "title", index = Index.TOKENIZED, store = Store.YES)
 private String title;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getTitle() {
  return title;
 }

 public void setTitle(String title) {
  this.title = title;
 }
}

2銆侀厤緗枃浠?br />

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
 <session-factory>
  <property name="hibernate.dialect">
   org.hibernate.dialect.Oracle9Dialect
  </property>
  <property name="hibernate.connection.url">
   jdbc:oracle:thin:@192.168.0.21:1521:oradb
  </property>
  <property name="hibernate.connection.username">
   goodsres
  </property>
  <property name="hibernate.connection.password">
   goodsres
  </property>
  <property name="hibernate.connection.driver_class">
   oracle.jdbc.driver.OracleDriver
  </property>

  <property name="hibernate.search.default.directory_provider">
   org.hibernate.search.store.FSDirectoryProvider
  </property>
  <property name="hibernate.search.default.indexBase">
   e:/index
  </property>
  <property name="hibernate.cache.provider_class">
   org.hibernate.cache.HashtableCacheProvider
  </property>

  <mapping class="cn.search.pojo.Foo" />

 </session-factory>

</hibernate-configuration>
3銆佹祴璇曚唬鐮?br />

package cn.search.manager;

import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertTrue;

import java.util.List;

import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;


import cn.search.pojo.Foo;

public class SearchResultsHibernate {
 private static SessionFactory sf = null;

 private static Session session = null;

 private static Transaction tx = null;

 @BeforeClass
 public static void setupBeforeClass() throws Exception {
  sf = new AnnotationConfiguration().configure("hibernate.cfg.xml")
    .buildSessionFactory();
  assertNotNull(sf);
 }

 @Before
 public void setUp() throws Exception {
  session = sf.openSession();
  tx = session.beginTransaction();
  tx.begin();
 }

 @After
 public void tearDown() throws Exception {
  tx.commit();
  session.close();
 }

 public static void tearDownAfterClass() throws Exception {
  if (sf != null)
   sf.close();
 }

 @Test
 public void testAddDept() throws Exception {
  Foo foo = new Foo();

  foo.setId(1);

  foo.setName("絎竴涓猦ibernate search");

  foo.setTitle("濂藉ソ瀛︿範錛屽ぉ澶╁悜涓?);

  session.delete(foo);
 }

 @Test
 public void testIndex() throws Exception {
  FullTextSession fullTextSession = Search.createFullTextSession(session);
  assertNotNull(session);

  QueryParser parser = new QueryParser("title", new StopAnalyzer());
  org.apache.lucene.search.Query luceneQuery = parser.parse("濂藉ソ瀛︿範");
  Query hibQuery = fullTextSession.createFullTextQuery(luceneQuery,
    Foo.class);

  List list = hibQuery.list();

  assertTrue(list.size() > 0);
 }

 public static void main(String[] args) {

  try {
   setupBeforeClass();
   SearchResultsHibernate searchResults = new SearchResultsHibernate();
   searchResults.setUp();
   searchResults.testAddDept();
   searchResults.tearDown();
   SearchResultsHibernate.tearDownAfterClass();

  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}



]]>
hibernate+spring鏁村悎http://m.tkk7.com/fangts/archive/2007/12/20/168929.html鏂規稕鍗?/dc:creator>鏂規稕鍗?/author>Thu, 20 Dec 2007 01:28:00 GMThttp://m.tkk7.com/fangts/archive/2007/12/20/168929.htmlhttp://m.tkk7.com/fangts/comments/168929.htmlhttp://m.tkk7.com/fangts/archive/2007/12/20/168929.html#Feedback0http://m.tkk7.com/fangts/comments/commentRss/168929.htmlhttp://m.tkk7.com/fangts/services/trackbacks/168929.htmlSpring Framework鏈寰椾互鍑哄悕鐨勬槸涓嶩ibernate鐨勬棤緙濋摼鎺ワ紝鍩烘湰涓婄敤Spring錛屽氨浼氱敤Hibernate銆傚彲鎯滅殑鏄疭pring鎻愪緵鐨凥ibernateTemplate鍔熻兘鏄懼緱涓嶅錛屼嬌鐢ㄨ搗鏉ヤ篃涓嶆槸寰堟柟渚褲傛垜浠紪紼嬪簭鏃訛紝涓鑸厛鍐橞usinessService錛岀敱BusinessService璋僁AO鏉ユ墽琛屽瓨鍌紝鍦ㄨ繖鏂歸潰Spring娌℃湁寰堝ソ鐨勪緥瀛愶紝閫犳垚鐪熸鎯崇敤濂藉畠錛屽茍涓嶅鏄撱?/p>

鎴戜滑鐨勬濊礬鏄厛鍐欎竴涓狟aseDao錛屼豢鐓ibernateTemplate錛屽皢鍩烘湰鍔熻兘鍏ㄩ儴瀹炵幇錛?/p>

public class BaseDao extends HibernateDaoSupport{

    private Log log = LogFactory.getLog(getClass());

    public Session openSession() {
        return SessionFactoryUtils.getSession(getSessionFactory(), false);
    }

    public Object get(Class entityClass, Serializable id) throws DataAccessException {
        Session session = openSession();
        try {
            return session.get(entityClass, id);
        }
        catch (HibernateException ex) {
            throw SessionFactoryUtils.convertHibernateAccessException(ex);
        }
    }

    public Serializable create(Object entity) throws DataAccessException {
        Session session = openSession();
        try {
            return session.save(entity);
        }
        catch (HibernateException ex) {
            throw SessionFactoryUtils.convertHibernateAccessException(ex);
        }
    }

...

鍏跺畠鐨凞AO錛屼粠BaseDao緇ф壙鍑烘潵錛岃繖鏍峰啓鍏朵粬鐨凞AO錛屼唬鐮佸氨浼氬緢灝戙?/p>

浠嶣aseDao緇ф壙鍑烘潵EntityDao錛屼笓闂ㄨ礋璐d竴鑸疄浣撶殑鍩烘湰鎿嶄綔錛屼細鏇存柟渚褲?/p>

public interface EntityDao {

    public Object get(Class entityClass, Serializable id) throws DataAccessException;

    public Object load(Class entityClass, Serializable id) throws DataAccessException;

    public Serializable create(Object entity) throws DataAccessException;
...}

/**
 * Base class for Hibernate DAOs.  This class defines common CRUD methods for
 * child classes to inherit. User Sping AOP Inteceptor
 */
public class EntityDaoImpl extends BaseDao implements EntityDao{

}

涓轟簡Transaction鐨勬帶鍒訛紝閲囩敤AOP鐨勬柟寮忥細

public interface EntityManager {

    public Object get(Class entityClass, Serializable id);

    public Object load(Class entityClass, Serializable id);

    public Serializable create(Object entity);
...

}

/**
 * Base class for Entity Service. User Sping AOP Inteceptor
 */
public class EntityManagerImpl implements EntityManager {

    private EntityDao entityDao;

    public void setEntityDao(EntityDao entityDao) {
        this.entityDao = entityDao;
    }

    public Object get(Class entityClass, Serializable id) {
        return entityDao.get(entityClass, id);
    }

    public Object load(Class entityClass, Serializable id) {
        return entityDao.load(entityClass, id);
    }
...

}

榪欐牱鎴戜滑灝辨湁浜嗕竴涓氱敤鐨凥ibernate瀹炰綋寮曟搸錛屽彲浠ュ浠諱綍Hibernate瀹炰綋瀹炵幇鍩烘湰鐨勫鍔犮佷慨鏀廣佸垹闄ゃ佹煡璇㈢瓑銆?/p>

鍏跺畠鐨凚usinessService灝卞彲浠ョ戶鎵縀ntityManager錛屽揩閫熷疄鐜頒笟鍔¢昏緫銆?/p>

鍏蜂綋XML閰嶇疆濡備笅錛?/p>

 <!-- Oracle JNDI DataSource for J2EE environments -->
 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName"><value>java:comp/env/jdbc/testPool</value></property>
 </bean>

 <!-- Hibernate SessionFactory for Oracle -->
 <!-- Choose the dialect that matches your "dataSource" definition -->
 <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
  <property name="dataSource"><ref local="dataSource"/></property>
  <property name="mappingResources">
   <value>user-hbm.xml</value>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">net.sf.hibernate.dialect.OracleDialect</prop>
    <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.Provider</prop>
    <prop key="hibernate.cache.use_query_cache">true</prop>
                  <prop key="hibernate.show_sql">false</prop>
   </props>
  </property>
 </bean>

 <!-- AOP DAO Intecepter -->
        <bean id="hibernateInterceptor" class="org.springframework.orm.hibernate.HibernateInterceptor">
          <property name="sessionFactory">
            <ref bean="sessionFactory"/>
          </property>
        </bean>

        <bean id="entityDaoTarget" class="com.gpower.services.entity.dao.EntityDaoImpl">
          <property name="sessionFactory">
            <ref bean="sessionFactory"/>
          </property>
        </bean>

        <bean id="entityDao" class="org.springframework.aop.framework.ProxyFactoryBean">
          <property name="proxyInterfaces">
            <value>com.gpower.services.entity.dao.EntityDao</value>
          </property>
          <property name="interceptorNames">
            <list>
              <value>hibernateInterceptor</value>
              <value>entityDaoTarget</value>
            </list>
          </property>
        </bean>

 <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
 <bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
  <property name="sessionFactory"><ref local="sessionFactory"/></property>
 </bean>

 <!-- Transaction manager that delegates to JTA (for a transactional JNDI DataSource) -->
 <!--
 <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
 -->

 <!-- Transactional proxy for the Application primary business object -->
        <bean id="entityManagerTarget" class="com.gpower.services.entity.EntityManagerImpl">
          <property name="entityDao">
            <ref bean="entityDao"/>
          </property>
        </bean>

        <bean id="entityManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
          <property name="transactionManager">
            <ref bean="transactionManager"/>
          </property>
          <property name="target">
            <ref bean="entityManagerTarget"/>
          </property>
          <property name="transactionAttributes">
     <props>
       <prop key="get*">PROPAGATION_SUPPORTS</prop>
       <prop key="*">PROPAGATION_REQUIRED</prop>
     </props>
          </property>
        </bean>



]]>
主站蜘蛛池模板: 国产精品免费_区二区三区观看| 亚洲VA中文字幕不卡无码| www一区二区www免费| 日韩亚洲一区二区三区| 国产91色综合久久免费分享| 亚洲精品理论电影在线观看| 亚洲精品无码专区久久久| 免费大片黄在线观看yw| caoporn国产精品免费| 亚洲欧洲自拍拍偷综合| 亚洲精品岛国片在线观看| 成人在线免费看片| 一级中文字幕免费乱码专区| 亚洲日韩中文字幕| 久久久青草青青国产亚洲免观 | 在线亚洲午夜理论AV大片| 国产精品视频免费| 一级一级一级毛片免费毛片| 国产亚洲sss在线播放| 人人狠狠综合久久亚洲88| 日韩毛片无码永久免费看| 8x8×在线永久免费视频| 国产激情久久久久影院老熟女免费 | 免费夜色污私人影院在线观看| 免费国产黄网站在线观看视频| 理论片在线观看免费| 亚洲中文字幕无码av在线| 精品久久久久久亚洲| 亚洲&#228;v永久无码精品天堂久久| 免费能直接在线观看黄的视频 | 午夜视频在线观看免费完整版| 日本免费一区二区三区四区五六区| 直接进入免费看黄的网站| 国产精品亚洲精品青青青| 亚洲AV无码一区二区乱孑伦AS| 亚洲精品天堂成人片?V在线播放| 成年女人毛片免费播放视频m| 1000部啪啪未满十八勿入免费| a级毛片免费全部播放无码| 色视频在线观看免费| 亚洲久热无码av中文字幕|