锘??xml version="1.0" encoding="utf-8" standalone="yes"?> HQL榪愮畻絎?/span> QBC榪愮畻絎?/span> 鍚箟 = Restrictions.eq() 絳変簬equal <> Restrictions.ne() 涓嶇瓑浜巒ot equal > Restrictions.gt() 澶т簬greater than >= Restrictions.ge() 澶т簬絳変簬greater than or equal < Restrictions.lt() 灝忎簬less than <= Restrictions.le() 灝忎簬絳変簬less than or equal is null Restrictions.isnull() 絳変簬絀哄?/span> is not null Restrictions.isNotNull() 闈炵┖鍊?/span> like Restrictions.like() 瀛楃涓叉ā寮忓尮閰?/span> and Restrictions.and() 閫昏緫涓?/span> and Restrictions.conjunction() 閫昏緫涓?/span> or Restrictions.or() 閫昏緫鎴?/span> or Restrictions.disjunction() 閫昏緫鎴?/span> not Restrictions.not() 閫昏緫闈?/span> in(鍒楄〃) Restrictions.in() 絳変簬鍒楄〃涓殑鏌愪竴涓?/span> not in(鍒楄〃) Restrictions.not(Restrictions.in()) 涓嶇瓑浜庡垪琛ㄤ腑浠繪剰涓涓?/span> between x and y Restrictions.between() 闂尯闂磝y涓殑浠繪剰鍊?/span> not between x and y Restrictions.not(Restrictions..between()) 灝忎簬鍊糥鎴栬呭ぇ浜庡紋 涓 Hibernate 璁捐浜?CriteriaSpecification 浣滀負 Criteria 鐨勭埗鎺ュ彛錛屼笅闈㈡彁渚涗簡 Criteria鍜孌etachedCriteria 銆? List cats = sess.createCriteria(Cat.class) 綰︽潫鍙互鎸夐昏緫鍒嗙粍銆? List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "Fritz%") ) .add( Restrictions.or( Restrictions.eq( "age", new Integer(0) ), Restrictions.isNull("age") ) ) .list(); List cats = sess.createCriteria(Cat.class) .add( Restrictions.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) ) .add( Restrictions.disjunction() .add( Restrictions.isNull("age") ) .add( Restrictions.eq("age", new Integer(0) ) ) .add( Restrictions.eq("age", new Integer(1) ) ) .add( Restrictions.eq("age", new Integer(2) ) ) ) ) .list(); Hibernate鎻愪緵浜嗙浉褰撳鐨勫唴緗甤riterion綾誨瀷(Restrictions 瀛愮被), 浣嗘槸灝ゅ叾鏈夌敤鐨勬槸鍙互鍏佽 浣犵洿鎺ヤ嬌鐢⊿QL銆? List cats = sess.createCriteria(Cat.class) .add( Restrictions.sql("lower({alias}.name) like lower(?)", "Fritz%", Hibernate.STRING) ) .list(); {alias}鍗犱綅絎﹀簲褰撹鏇挎崲涓鴻鏌ヨ瀹炰綋鐨勫垪鍒悕銆? Property瀹炰緥鏄幏寰椾竴涓潯浠剁殑鍙﹀涓縐嶉斿緞銆備綘鍙互閫氳繃璋冪敤Property.forName() 鍒涘緩涓涓?/p>
Property銆? Property age = Property.forName("age"); List cats = sess.createCriteria(Cat.class) .add( Restrictions.disjunction() .add( age.isNull() ) .add( age.eq( new Integer(0) ) ) .add( age.eq( new Integer(1) ) ) .add( age.eq( new Integer(2) ) ) ) ) .add( Property.forName("name").in( new String[] { "Fritz", "Izi", "Pk" } ) ) .list(); 3. 緇撴灉闆嗘帓搴?/p>
浣犲彲浠ヤ嬌鐢╫rg.hibernate.criterion.Order鏉ヤ負鏌ヨ緇撴灉鎺掑簭銆? List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "F%") .addOrder( Order.asc("name") ) .addOrder( Order.desc("age") ) .setMaxResults(50) .list(); List cats = sess.createCriteria(Cat.class) .add( Property.forName("name").like("F%") ) .addOrder( Property.forName("name").asc() ) .addOrder( Property.forName("age").desc() ) .setMaxResults(50) .list(); 4. 鍏寵仈 浣犲彲浠ヤ嬌鐢╟reateCriteria()闈炲父瀹規槗鐨勫湪浜掔浉鍏寵仈鐨勫疄浣撻棿寤虹珛 綰︽潫銆?/p>
List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "F%") .createCriteria("kittens") .add( Restrictions.like("name", "F%") .list(); 娉ㄦ剰絎簩涓?createCriteria()榪斿洖涓涓柊鐨?Criteria瀹炰緥錛岃瀹炰緥寮曠敤kittens 闆嗗悎涓殑鍏冪礌銆? 鎺ヤ笅鏉ワ紝鏇挎崲褰㈡佸湪鏌愪簺鎯呭喌涓嬩篃鏄緢鏈夌敤鐨勩?/p>
List cats = sess.createCriteria(Cat.class) .createAlias("kittens", "kt") .createAlias("mate", "mt") .add( Restrictions.eqProperty("kt.name", "mt.name") ) .list(); (createAlias()騫朵笉鍒涘緩涓涓柊鐨?Criteria瀹炰緥銆? Cat瀹炰緥鎵淇濆瓨鐨勪箣鍓嶄袱嬈℃煡璇㈡墍榪斿洖鐨刱ittens闆嗗悎鏄?娌℃湁琚潯浠墮榪囨護鐨勩傚鏋滀綘甯屾湜鍙幏寰?/p>
絎﹀悎鏉′歡鐨刱ittens錛?浣犲繀欏諱嬌鐢╮eturnMaps()銆? List cats = sess.createCriteria(Cat.class) .createCriteria("kittens", "kt") .add( Restrictions.eq("name", "F%") ) .returnMaps() .list(); Iterator iter = cats.iterator(); while ( iter.hasNext() ) { Map map = (Map) iter.next(); Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS); Cat kitten = (Cat) map.get("kt"); } 5. 鍔ㄦ佸叧鑱旀姄鍙? 浣犲彲浠ヤ嬌鐢╯etFetchMode()鍦ㄨ繍琛屾椂瀹氫箟鍔ㄦ佸叧鑱旀姄鍙栫殑璇箟銆? List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "Fritz%") ) .setFetchMode("mate", FetchMode.EAGER) .setFetchMode("kittens", FetchMode.EAGER) .list(); 榪欎釜鏌ヨ鍙互閫氳繃澶栬繛鎺ユ姄鍙杕ate鍜宬ittens銆?/p>
6. 鏌ヨ紺轟緥 org.hibernate.criterion.Example綾誨厑璁鎬綘閫氳繃涓涓粰瀹氬疄渚?鏋勫緩涓涓潯浠舵煡璇€?/p>
Cat cat = new Cat(); cat.setSex('F'); cat.setColor(Color.BLACK); List results = session.createCriteria(Cat.class) .add( Example.create(cat) ) .list(); 鐗堟湰灞炴с佹爣璇嗙鍜屽叧鑱旇蹇界暐銆傞粯璁ゆ儏鍐典笅鍊間負null鐨勫睘鎬у皢琚帓闄ゃ? 鍙互鑷璋冩暣Example浣夸箣鏇村疄鐢ㄣ? Example example = Example.create(cat) .excludeZeroes() //exclude zero valued properties .excludeProperty("color") //exclude the property named "color" .ignoreCase() //perform case insensitive string comparisons .enableLike(); //use like for string comparisons List results = session.createCriteria(Cat.class) .add(example) .list(); 鐢氳嚦鍙互浣跨敤examples鍦ㄥ叧鑱斿璞′笂鏀劇疆鏉′歡銆?/p>
List results = session.createCriteria(Cat.class) .add( Example.create(cat) ) .createCriteria("mate") .add( Example.create( cat.getMate() ) ) .list(); 7. 鎶曞獎(Projections)銆佽仛鍚堬紙aggregation錛夊拰鍒嗙粍錛坓rouping錛?/p>
org.hibernate.criterion.Projections鏄?Projection 鐨勫疄渚嬪伐鍘傘傛垜浠氳繃璋冪敤 setProjection()搴旂敤鎶曞獎鍒頒竴涓煡璇€? List results = session.createCriteria(Cat.class) .setProjection( Projections.rowCount() ) .add( Restrictions.eq("color", Color.BLACK) ) .list(); List results = session.createCriteria(Cat.class) .setProjection( Projections.projectionList() .add( Projections.rowCount() ) .add( Projections.avg("weight") ) .add( Projections.max("weight") ) .add( Projections.groupProperty("color") ) ) .list(); 顥ヮ棩 鍦ㄤ竴涓潯浠舵煡璇腑娌℃湁蹇呰鏄懼紡鐨勪嬌鐢?"group by" 銆傛煇浜涙姇褰辯被鍨嬪氨鏄瀹氫箟涓?鍒嗙粍鎶曞獎錛屼粬 浠篃鍑虹幇鍦⊿QL鐨刧roup by瀛愬彞涓? 鍙互閫夋嫨鎶婁竴涓埆鍚嶆寚媧劇粰涓涓姇褰憋紝榪欐牱鍙互浣挎姇褰卞艱綰︽潫鎴栨帓搴忔墍寮曠敤銆備笅闈㈡槸涓ょ涓嶅悓鐨?/p>
瀹炵幇鏂瑰紡錛? List results = session.createCriteria(Cat.class) .setProjection( Projections.alias( Projections.groupProperty("color"), "colr" ) ) .addOrder( Order.asc("colr") ) .list(); 顥ヮ棩 List results = session.createCriteria(Cat.class) .setProjection( Projections.groupProperty("color").as("colr") ) .addOrder( Order.asc("colr") ) .list(); alias()鍜宎s()鏂規硶綆渚跨殑灝嗕竴涓姇褰卞疄渚嬪寘瑁呭埌鍙﹀涓涓?鍒悕鐨凱rojection瀹炰緥涓傜畝鑰岃█涔嬶紝 褰撲綘娣誨姞涓涓姇褰卞埌涓涓姇褰卞垪琛ㄤ腑鏃?浣犲彲浠ヤ負瀹冩寚瀹氫竴涓埆鍚嶏細 List results = session.createCriteria(Cat.class) .setProjection( Projections.projectionList() .add( Projections.rowCount(), "catCountByColor" ) .add( Projections.avg("weight"), "avgWeight" ) .add( Projections.max("weight"), "maxWeight" ) .add( Projections.groupProperty("color"), "color" ) ) .addOrder( Order.desc("catCountByColor") ) .addOrder( Order.desc("avgWeight") ) .list(); List results = session.createCriteria(Domestic.class, "cat") .createAlias("kittens", "kit") .setProjection( Projections.projectionList() .add( Projections.property("cat.name"), "catName" ) .add( Projections.property("kit.name"), "kitName" ) ) .addOrder( Order.asc("catName") ) .addOrder( Order.asc("kitName") ) .list(); 涔熷彲浠ヤ嬌鐢≒roperty.forName()鏉ヨ〃紺烘姇褰憋細 List results = session.createCriteria(Cat.class) .setProjection( Property.forName("name") ) .add( Property.forName("color").eq(Color.BLACK) ) .list(); List results = session.createCriteria(Cat.class) .setProjection( Projections.projectionList() .add( Projections.rowCount().as("catCountByColor") ) .add( Property.forName("weight").avg().as("avgWeight") ) .add( Property.forName("weight").max().as("maxWeight") ) .add( Property.forName("color").group().as("color" ) ) .addOrder( Order.desc("catCountByColor") ) .addOrder( Order.desc("avgWeight") ) .list(); 8. 紱葷嚎(detached)鏌ヨ鍜屽瓙鏌ヨ 鍦╳eb灞傦紝紼嬪簭鍛樹嬌鐢―etachedCriteria鏉ユ瀯閫犳煡璇㈡潯浠訛紝鐒跺悗灝嗚繖涓狣etachedCriteria浣滀負鏂規硶璋冪敤鍙傛暟浼犻掔粰涓氬姟灞傚璞°傝屼笟鍔″眰瀵硅薄鑾峰緱DetachedCriteria涔嬪悗錛屽彲浠ュ湪session鑼冨洿鍐呯洿鎺ユ瀯閫燙riteria錛岃繘琛屾煡璇€傚氨姝わ紝鏌ヨ璇彞鐨勬瀯閫犲畬鍏ㄨ鎼鍒皐eb灞傚疄鐜幫紝鑰屼笟鍔″眰鍒欏彧璐熻矗瀹屾垚鎸佷箙鍖栧拰鏌ヨ鐨勫皝瑁呭嵆鍙紝涓庢煡璇㈡潯浠舵瀯閫犲畬鍏ㄨВ鑰︼紝闈炲父瀹岀編錛佽繖鎭愭曚篃鏄互鍓嶅緢澶氫紒鍥懼湪web灞備唬鐮佷腑鏋勯燞QL璇彞鐨勪漢鎯沖疄鐜扮殑姊︽兂鍚э紒 DetachedCriteria綾諱嬌浣犲湪涓涓猻ession鑼冨洿涔嬪鍒涘緩涓涓煡璇紝騫朵笖鍙互浣跨敤浠繪剰鐨?Session鏉?/p>
鎵ц瀹冦? DetachedCriteria query = DetachedCriteria.forClass(Cat.class) .add( Property.forName("sex").eq('F') ); //鍒涘緩涓涓猄ession Session session = .; Transaction txn = session.beginTransaction(); List results = query.getExecutableCriteria(session).setMaxResults(100).list(); txn.commit(); session.close(); DetachedCriteria涔熷彲浠ョ敤浠ヨ〃紺哄瓙鏌ヨ銆傛潯浠跺疄渚嬪寘鍚瓙鏌ヨ鍙互閫氳繃 Subqueries鎴栬?/p>
Property鑾峰緱銆?/p>
DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class) .setProjection( Property.forName("weight").avg() ); session.createCriteria(Cat.class) .add( Property.forName("weight).gt(avgWeight) ) .list(); DetachedCriteria weights = DetachedCriteria.forClass(Cat.class) .setProjection( Property.forName("weight") ); session.createCriteria(Cat.class) .add( Subqueries.geAll("weight", weights) ) .list(); 鐩鎬簰鍏寵仈鐨勫瓙鏌ヨ涔熸槸鏈夊彲鑳界殑錛? DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "cat2") .setProjection( Property.forName("weight").avg() ) .add( Property.forName("cat2.sex").eqProperty("cat.sex") ); session.createCriteria(Cat.class, "cat") .add( Property.forName("weight).gt(avgWeightForSex) ) .list(); 鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/kjfcpua/archive/2009/06/21/4287248.aspx 銆銆DetachedCriteria鍙互瑙e喅榪欎釜闂錛屽嵆鍦╳eb灞傦紝紼嬪簭鍛樹嬌鐢―etachedCriteria鏉ユ瀯閫犳煡璇㈡潯浠訛紝鐒跺悗灝嗚繖涓?DetachedCriteria浣滀負鏂規硶璋冪敤鍙傛暟浼犻掔粰涓氬姟灞傚璞°傝屼笟鍔″眰瀵硅薄鑾峰緱DetachedCriteria涔嬪悗錛屽彲浠ュ湪session鑼冨洿鍐呯洿鎺ユ瀯閫燙riteria錛岃繘琛屾煡璇€傚氨姝わ紝鏌ヨ璇彞鐨勬瀯閫犲畬鍏ㄨ鎼鍒皐eb灞傚疄鐜幫紝鑰屼笟鍔″眰鍒欏彧璐熻矗瀹屾垚鎸佷箙鍖栧拰鏌ヨ鐨勫皝瑁呭嵆鍙紝涓庢煡璇㈡潯浠舵瀯閫犲畬鍏ㄨВ鑰︼紝闈炲父瀹岀編錛佽繖鎭愭曚篃鏄互鍓嶅緢澶氫紒鍥懼湪web灞備唬鐮佷腑鏋勯燞QL璇彞鐨勪漢鎯沖疄鐜扮殑姊︽兂鍚э紒 銆銆紺轟緥浠g爜鐗囨濡備笅錛?/p>
銆銆web灞傜▼搴忔瀯閫犳煡璇㈡潯浠訛細 銆銆Java浠g爜: 銆銆Department鍜孍mployee鏄竴瀵瑰鍏寵仈錛屾煡璇㈡潯浠朵負錛?/p>
銆銆鍚嶇О鏄?#8220;department”寮鍙戦儴闂紱 銆銆涓氬姟灞傚璞′嬌鐢ㄨ鏉′歡鎵ц鏌ヨ錛?/p>
銆銆java浠g爜: detachedCriteria.getExecutableCriteria(session).list(); 銆銆鐒惰孲pring鍜孒ibernate3鐨凞etachedCriteria鏈変笉鍏煎鐨勯棶棰橈紝鍥犳鍦⊿pring鐜涓嬮潰浣跨敤Hibernate3闇瑕佹敞鎰忥細 銆銆Spring鐨凥ibernateTemplate鎻愪緵浜咹ibernate鐨勫畬緹庡皝瑁咃紝鍗抽氳繃鍖垮悕綾誨疄鐜板洖璋冿紝鏉ヤ繚璇丼ession鐨勮嚜鍔ㄨ祫婧愮鐞嗗拰浜嬪姟鐨勭鐞嗐傚叾涓牳蹇冩柟娉曟槸錛?/p>
銆銆java浠g爜: 銆銆web灞備唬鐮侊細 銆銆java浠g爜: 銆銆涓氬姟灞備唬鐮佷嬌鐢╯pring錛孌epartmentManager鐨刦indByCriteria濡備笅錛?/p>
銆銆java浠g爜: public List findByCriteria(final DetachedCriteria detachedCriteria) { 銆銆java浠g爜: 銆銆浣嗘槸璇ョ▼搴忎唬鐮佹墽琛岋紝浼氭姏鍑哄己鍒剁被鍨嬭漿鎹㈠紓甯革紒 銆銆鎴戣窡韙簡涓涓媠pring鍜孒ibernate婧愪唬鐮侊紝鍘熷洜濡備笅錛?/p>
銆銆spring鐨凥ibernateTemplate鐨別xecute鏂規硶鎻愪緵鐨勫洖璋冩帴鍙e叿鏈塖ession浣滀負鍙傛暟錛屼絾鏄疄闄呬笂錛岄粯璁ゆ儏鍐典笅錛?HibernateTemplate浼犻掔粰鍥炶皟鎺ュ彛鐨剆ession騫朵笉鏄痮rg.hibernate.impl.SessionImpl綾伙紝鑰屾槸 SessionImpl綾葷殑涓涓狿roxy綾匯備箣鎵浠ユ浛鎹㈡垚涓轟竴涓狿roxy綾伙紝HibernateTemplate鐨勬敞閲婅鏄庯紝Proxy鎻愪緵浜嗕竴浜涢澶栫殑鍔熻兘錛屽寘鎷嚜鍔ㄨ緗瓹achable錛孴ransaction鐨勮秴鏃舵椂闂達紝Session璧勬簮鐨勬洿縐瀬鐨勫叧闂瓑絳夈?/p>
銆銆java浠g爜: 銆銆浣嗘槸閬楁喚鐨勬槸錛孒ibernate鐨凞etachedCriteria鐨剆etExecutableCriteria鏂規硶鍗磋姹傚皢session鍙傛暟寮哄埗杞負SessionImpl錛屼絾鏄痵pring浼犺繃鏉ョ殑鍗存槸涓涓狿roxy綾伙紝鍥犳灝辨姤閿欎簡銆?/p>
銆銆java浠g爜: 銆銆瑙e喅鏂規硶錛岀姝pring鐨凥ibernateTemplate浼犻扨roxy綾伙紝寮哄埗瑕佹眰瀹冧紶閫掔湡瀹炵殑SessionImpl綾伙紝鍗崇粰exexute鏂規硶澧炲姞涓涓弬鏁幫紝鎻愪緵鍙傛暟涓簍rue錛屽涓嬶細 銆銆java浠g爜: 3 錛宖ind ( String queryString ) : 鏍規嵁HQL鏌ヨ瀛楃涓叉潵榪斿洖瀹炰緥闆嗗悎 4 錛宖indByNamedQuery ( String queryName) : 鏍規嵁鍛藉悕鏌ヨ榪斿洖瀹炰緥闆嗗悎 5 錛実et ( Class entityClass , Serializable id ) : 鏍規嵁涓婚敭鍔犺澆鐗瑰畾鎸佷箙鍖栫被鐨勫疄渚?br />
public Person getPerson() 7 錛宻aveOrUpdate ( Object entity ): 鏍規嵁瀹炰緥鐘舵侊紝閫夋嫨淇濆瓨鎴栬呮洿鏂?/p>
8 錛寀pdate ( Object entity ) : 鏇存柊瀹炰緥鐨勭姸鎬侊紝瑕佹眰entity鏄寔涔呯姸鎬?/p>
9 錛宻etMaxResults ( int maxResults ) : 璁劇疆鍒嗛〉鐨勫ぇ灝忋?/p>
綆$悊浜岀駭緙撳瓨 涓綰х紦瀛樺拰浜岀駭緙撳瓨鐨勪氦浜掗棶棰?br />
1 涓嶈緗?榛樿)浼氬啓鍏ヤ簩綰х紦瀛橈紝涔熶細璇誨嚭 3 PUT鍙啓鍏ヤ簩綰х紦瀛橀〉涓嶈鍙?/p>
鏌ヨ緙撳瓨鏄拡瀵規櫘閫氬睘鎬х粨鏋滈泦鐨勭紦瀛?br />
瀵瑰疄浣撳璞$殑緇撴灉鍙紦瀛榠d 鏌ヨ緙撳瓨鐨勭敓鍛藉懆鏈燂紝褰撳墠鍏寵仈鐨勮〃鍙戠敓淇敼錛岄偅涔堟煡璇㈢紦瀛樼敓鍛藉懆鏈熺粨鏉?/p>
鏌ヨ緙撳瓨鐨勯厤緗拰浣跨敤 * 鍦ㄧ▼搴忎腑鏄懼紡璧風敤 2 Session鍜屾煡璇㈢紦瀛樼敓鍛藉懆鏈熸病鏈夊叧緋?br />
3 鏌ヨ緙撳瓨瀵筿uery.iterate()涓嶈搗浣滅敤錛屽彧鐢ㄥquery.list()璧蜂綔鐢?br />
鎮茶閿佺殑瀹炵幇錛岄氬父渚濊禆浜庢暟鎹簱鏈哄埗錛屽湪鏁翠釜榪囩▼涓皢鏁版嵁閿佸畾錛屽叾瀹冧換浣曠敤鎴烽兘涓嶈兘璇誨彇鎴栦慨鏀?br />
session.load(Inventory.class, 1, LockMode.UPGRADE); 涔愯閿?/p>
澶у鏁板熀浜庢暟鎹増鏈褰曟満鍒?version)瀹炵幇錛屼竴鑸槸鍦ㄦ暟鎹簱琛ㄤ腑鍔犲叆涓涓獀ersion瀛楁 session flush鏂規硶涓昏鍋氫簡涓や歡浜嬶細 session鍦ㄤ粈涔堟儏鍐典笅鎵цflush hibernate鎸夌収save(insert),update,delete欏哄簭鎻愪氦鐩稿叧鐨勬搷浣?br />
------------------------------------------------------------------------ <id name="id">
13:35:42,254 INFO Configuration:332 - Reading mappings from file: D:\opt\ASF\Tomcat6.0\webapps\cityunion\WEB-INF\classes\com\c6\orm\model\bull\BullInfo.hbm.xml
13:35:42,442 INFO HbmBinder:322 - Mapping class: com.c6.orm.model.bull.BullInfo -> TB_BULL_INFO
13:35:42,442 INFO Configuration:332 - Reading mappings from file: D:\opt\ASF\Tomcat6.0\webapps\cityunion\WEB-INF\classes\com\c6\orm\model\coin\CardInfo.hbm.xml
13:35:42,457 INFO HbmBinder:322 - Mapping class: com.c6.orm.model.coin.CardInfo -> TB_CARD_INFO
13:35:42,473 INFO Configuration:332 - Reading mappings from file: D:\opt\ASF\Tomcat6.0\webapps\cityunion\WEB-INF\classes\com\c6\orm\model\coin\Payment.hbm.xml
13:35:42,489 INFO HbmBinder:322 - Mapping class: com.c6.orm.model.coin.Payment -> TB_PAYMENT
13:35:42,489 INFO Configuration:332 - Reading mappings from file: D:\opt\ASF\Tomcat6.0\webapps\cityunion\WEB-INF\classes\com\c6\orm\model\coin\TbBankExchangeLog.hbm.xml
銆傘傘傘傘傘傘傘傘傘傘傘?br />
鎻忚堪錛氭彁紺轟俊鎭疷nable to verify action class exists at initialization
涓嶅仠鐨勫姞杞?hbm.xml鏂囦歡錛屽鑷磘omcat鏃犳硶鍚姩銆?br />
琚彁紺轟俊鎭瀵鹼紝鍦ㄧ綉涓婃壘浜嗗ぇ閲忚祫鏂欙紝閮芥病鏈夎В鍐熾傚師鏉ョ敱浜庤嚜宸蹭笉灝忓績鍐欓敊浜嗛厤緗枃浠?br />
<property name="slaveSelfTotal" type="int" column="SLAVE_SELF_TOTAL"/>
<property name="slaveSelfTotal" type="int" column="SLAVE_SELF_TOTAL"/>
鍐欎簡涓ゆ銆?br />
鍑虹幇浜涢棶棰樺ぇ澶氭槸鍥犱負閰嶇疆鏂囦歡鍑洪敊鑰屽紩璧風殑錛屼粩緇嗘煡鐪嬫渶榪戜慨鏀圭殑緗厤鏂囦歡灝辨壘鍒伴棶棰樹簡
]]>import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Configuration cfg=new Configuration().configure();
SchemaExport export=new SchemaExport(cfg);
export.create(true, true);
}
}
]]><?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="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=epai</property>
<property name="connection.username">sa</property>
<property name="connection.password">accp</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>
<!--
<property name="hibernate.current_session_context_class">jta</property>
-->
<mapping resource="org/epai/entity/Users.hbm.xml"/>
<mapping resource="org/epai/entity/Goods.hbm.xml"/>
<mapping resource="org/epai/entity/Bid.hbm.xml"/>
</session-factory>
</hibernate-configuration>
]]>
//鑾峰彇璁板綍鎬繪暟
recordCount=Convert.ToInt32(criteria.SetProjection( Projections.Count(MovieUrl.__ID )) .UniqueResult( ));
criteria.SetProjection( null );
Criteria c=session.createCriteria(Book.class);
c.add(Restrictions.like("bookname", "a",MatchMode.ANYWHERE));
c.add(Restrictions.between("bid", 1, 3));
c.add(Restrictions.not(Restrictions.in("bid", new Integer[]{1,2,4})));
c.setFirstResult(0);
c.setMaxResults(2);
List list=c.list();
Restrictions.like(“”,…,MatchMode.ANYWHERE)
AddOrder(Order.asc(“fwid”))
鍦╫racle鏁版嵁搴撲腑錛屽鏋滀嬌鐢?span style="font-size: 12pt; font-family: 瀹嬩綋">Restrictions.ne("name","寮犱笁")錛屼笉浼氬寘鎷瀛楁鍊間負絀虹殑璁板綍
]]>
1 Criteria 鍜?DetachedCriteria 鐨勪富瑕佸尯鍒湪浜庡垱寤虹殑褰㈠紡涓嶄竴鏍鳳紝 Criteria 鏄湪綰跨殑錛屾墍
浠ュ畠鏄敱 Hibernate Session 榪涜鍒涘緩鐨勶紱鑰?DetachedCriteria 鏄綰跨殑錛屽垱寤烘椂鏃犻渶Session錛孌etachedCriteria 鎻愪緵浜?2 涓潤鎬佹柟娉?forClass(Class) 鎴?forEntityName(Name)
榪涜DetachedCriteria 瀹炰緥鐨勫垱寤恒?Spring 鐨勬鏋舵彁渚涗簡getHibernateTemplate().findByCriteria(detachedCriteria) 鏂規硶鍙互寰堟柟渚垮湴鏍規嵁DetachedCriteria 鏉ヨ繑鍥炴煡璇㈢粨鏋溿?
2 Criteria 鍜?DetachedCriteria 鍧囧彲浣跨敤 Criterion 鍜?Projection 璁劇疆鏌ヨ鏉′歡銆傚彲浠ヨ
緗?FetchMode( 鑱斿悎鏌ヨ鎶撳彇鐨勬ā寮?) 錛岃緗帓搴忔柟寮忋傚浜?Criteria 榪樺彲浠ヨ緗?FlushModel
錛堝啿鍒?Session 鐨勬柟寮忥級鍜?LockMode 錛堟暟鎹簱閿佹ā寮忥級銆?
浜?涓嬮潰瀵?Criterion 鍜?Projection 榪涜璇︾粏璇存槑錛?br />
1 Criterion 鏄?Criteria 鐨勬煡璇㈡潯浠躲侰riteria 鎻愪緵浜?add(Criterion criterion) 鏂規硶鏉?br />
娣誨姞鏌ヨ鏉′歡銆?br />
2 Criterion 鎺ュ彛鐨勪富瑕佸疄鐜板寘鎷細 Example 銆?Junction 鍜?SimpleExpression 銆傝?
Junction 鐨勫疄闄呬嬌鐢ㄦ槸瀹冪殑涓や釜瀛愮被 conjunction 鍜?disjunction 錛屽垎鍒槸浣跨敤 AND 鍜?OR 鎿?br />
浣滅榪涜鏉ヨ仈緇撴煡璇㈡潯浠墮泦鍚堛?br />
3 Criterion 鐨勫疄渚嬪彲浠ラ氳繃 Restrictions 宸ュ叿綾繪潵鍒涘緩錛孯estrictions 鎻愪緵浜嗗ぇ閲忕殑闈欐?br />
鏂規硶錛屽 eq 錛堢瓑浜庯級銆?ge 錛堝ぇ浜庣瓑浜庯級銆?between 絳夋潵鏂規硶鐨勫垱寤?Criterion 鏌ヨ鏉′歡
錛圫impleExpression 瀹炰緥錛夈傞櫎姝や箣澶栵紝 Restrictions 榪樻彁渚涗簡鏂規硶鏉ュ垱寤?conjunction 鍜?
disjunction 瀹炰緥錛岄氳繃寰璇ュ疄渚嬬殑 add(Criteria) 鏂規硶鏉ュ鍔犳煡璇㈡潯浠跺艦鎴愪竴涓煡璇㈡潯浠墮泦鍚堛?br />
4 鑷充簬 Example 鐨勫垱寤烘湁鎵涓嶅悓錛?Example 鏈韓鎻愪緵浜嗕竴涓潤鎬佹柟娉?create(Object entity)錛?br />
鍗蟲牴鎹竴涓璞★紙瀹為檯浣跨敤涓竴鑸槸鏄犲皠鍒版暟鎹簱鐨勫璞★級鏉ュ垱寤恒傜劧鍚庡彲浠ヨ緗竴浜涜繃婊ゆ潯浠訛細
Example exampleUser =Example.create(u).ignoreCase() // 蹇界暐澶у皬鍐?
.enableLike(MatchMode.ANYWHERE);
// 瀵?String 綾誨瀷鐨勫睘鎬э紝鏃犺鍦ㄩ偅閲屽煎湪閭i噷閮藉尮閰嶃傜浉褰撲簬 %value%
5 Project 涓昏鏄 Criteria 鑳藉榪涜鎶ヨ〃鏌ヨ錛屽茍鍙互瀹炵幇鍒嗙粍銆?Project 涓昏鏈?
SimpleProjection 銆?ProjectionList 鍜?Property 涓変釜瀹炵幇銆傚叾涓?SimpleProjection 鍜?
ProjectionList 鐨勫疄渚嬪寲鏄敱鍐呭緩鐨?Projections 鏉ュ畬鎴愶紝濡傛彁渚涚殑 avg 銆?count 銆?max 銆?
min 銆?sum 鍙互璁╁紑鍙戣呭緢瀹規槗瀵規煇涓瓧孌佃繘琛岀粺璁℃煡璇€?
6 Property 鏄鏌愪釜瀛楁榪涜鏌ヨ鏉′歡鐨勮緗紝濡傞氳繃Porperty.forName(“color”).in
(new String[]{“black”,”red”,”write”}); 鍒欏彲浠ュ垱寤轟竴涓?Project 瀹炰緥銆傞氳繃
criteria 鐨?add(Project) 鏂規硶鍔犲叆鍒版煡璇㈡潯浠朵腑鍘匯?
浣跨敤 Criteria 榪涜鏌ヨ錛屼富瑕佽娓呮櫚鐨勬槸 Hibernate 鎻愪緵浜嗛偅浜涚被鍜屾柟娉曟潵婊¤凍寮鍙戜腑鏌?br />
璇㈡潯浠剁殑鍒涘緩鍜岀粍瑁咃紝涓嬮潰浠嬬粛鍑犵鐢ㄦ硶錛?br />
1. 鍒涘緩涓涓狢riteria 瀹炰緥
org.hibernate.Criteria鎺ュ彛琛ㄧず鐗瑰畾鎸佷箙綾葷殑涓涓煡璇€係ession鏄?Criteria瀹炰緥鐨勫伐鍘傘?br />
Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();
2. 闄愬埗緇撴灉闆嗗唴瀹?br />
涓涓崟鐙殑鏌ヨ鏉′歡鏄痮rg.hibernate.criterion.Criterion 鎺ュ彛鐨勪竴涓疄渚嬨?br />
org.hibernate.criterion.Restrictions綾?瀹氫箟浜嗚幏寰楁煇浜涘唴緗瓹riterion綾誨瀷鐨勫伐鍘傛柟娉曘?
.add( Restrictions.like("name", "Fritz%") )
.add( Restrictions.between("weight", minWeight, maxWeight) )
.list();
渚嬪瓙
public List findAllByCriter(final DetachedCriteria detachedCriteria){
return (List)getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException{
Criteria criteria=detachedCriteria.getExecutableCriteria(session);
return criteria.list();
}
});
}
-----------------------------------------------------------------------------------------
Hibernate涓鐩撮兘璁や負姣旇緝綆鍗?灝遍偅涔堝獎灝勪竴涓嬶細錛変絾鏈榪戦」鐩綋涓亣瑙佸緢澶氶棶棰橈紝浠婂ぉ鐪嬭鍒漢鍦ㄩ」鐩綋涓嬌鐢ㄤ簡銆Hibernate3鐨凞etachedCriteria錛屾劅瑙夌湡鐨勬槸澶ソ浜嗭紝浜庢槸灝辮姳浜嗙偣鏃墮棿鐮旂┒浜嗕竴涓嬶紝甯屾湜鍜屽ぇ瀹跺垎浜竴涓嬪惂
銆銆閽堝榪欑闇姹傦紝瀵逛簬鍒嗗眰搴旂敤紼嬪簭鏉ヨ錛學eb灞傞渶瑕佷紶閫掍竴涓煡璇㈢殑鏉′歡鍒楄〃緇欎笟鍔″眰瀵硅薄錛屼笟鍔″眰瀵硅薄鑾峰緱榪欎釜鏉′歡鍒楄〃涔嬪悗錛岀劧鍚庝緷嬈″彇鍑烘潯浠訛紝鏋勯犳煡璇㈣鍙ャ傝繖閲岀殑涓涓毦鐐規槸鏉′歡鍒楄〃鐢ㄤ粈涔堟潵鏋勯狅紵浼犵粺涓婁嬌鐢∕ap錛屼絾鏄繖縐嶆柟寮忕己闄峰緢澶э紝Map鍙互浼犻掔殑淇℃伅闈炲父鏈夐檺錛屽彧鑳戒紶閫抧ame鍜?value錛屾棤娉曚紶閫掔┒绔熻鍋氭庢牱鐨勬潯浠惰繍綆楋紝絀剁珶鏄ぇ浜庯紝灝忎簬錛宭ike錛岃繕鏄叾瀹冪殑浠涔堬紝涓氬姟灞傚璞″繀欏葷‘鍒囨帉鎻℃瘡鏉ntry鐨勯殣鍚潯浠躲傚洜姝や竴鏃﹂殣鍚潯浠舵敼鍙橈紝涓氬姟灞傚璞$殑鏌ヨ鏋勯犵畻娉曞繀欏葷浉搴斾慨鏀癸紝浣嗘槸榪欑鏌ヨ鏉′歡鐨勬敼鍙樻槸闅愬紡綰﹀畾鐨勶紝鑰屼笉鏄▼搴忎唬鐮佺害鏉熺殑錛屽洜姝ら潪甯稿鏄撳嚭閿欍?/p>
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);
detachedCriteria.add(Restrictions.eq("name", "department")).createAlias("employees", "e").add(Restrictions.gt(("e.age"), new Integer(20)));
銆銆閮ㄩ棬閲岄潰鐨勯泧鍛樺勾榫勫ぇ浜?0宀侊紱
銆銆鏈澶х殑鎰忎箟鍦ㄤ簬錛屼笟鍔″眰浠g爜鏄浐瀹氫笉鍙樼殑錛屾墍鏈夋煡璇㈡潯浠剁殑鏋勯犻兘鍦╳eb灞傚畬鎴愶紝涓氬姟灞傚彧璐熻矗鍦╯ession鍐呮墽琛屼箣銆傝繖鏍蜂唬鐮佸氨鍙斁涔嬪洓嫻瘋岀殕鍑嗭紝閮芥棤欏諱慨鏀逛簡銆?/p>
HibernateTemplate.execute(new HibernateCallback() {
銆public Object doInHibernate(Session session) throws HibernateException {
銆銆....
銆}
}
銆銆鍥炶皟鏂規硶鎻愪緵浜唖ession浣滀負鍙傛暟錛屾湁浜唖ession錛屽氨鍙互鑷敱鐨勪嬌鐢℉ibernate API緙栫▼浜嗐備嬌鐢ㄤ簡spring鐨勪箣鍚庯紝浠g爜淇敼濡備笅錛?/p>
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);
detachedCriteria.createAlias("employees", "e").add(Restrictions.eq("name", "department")).add(Restrictions.gt(("e.age"), new Integer(20)));
departmentManager.findByCriteria(detachedCriteria);
銆銆鏋勯燿etachedCriteria錛屼綔涓哄弬鏁頒紶閫掔粰departmentManager
銆return (List) getHibernateTemplate().execute(new HibernateCallback() {
銆銆public Object doInHibernate(Session session) throws HibernateException {
銆銆銆Criteria criteria = detachedCriteria.getExecutableCriteria(session);
銆銆銆return criteria.list();
銆銆}
銆});
}
銆銆瀹為檯涓婁篃灝辨槸錛?/p>
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
return criteria.list();
銆銆鑰屽凡
private boolean exposeNativeSession = false;
...
銆銆execute鏂規硶鍐呴儴錛?br />
Session sessionToExpose = (exposeNativeSession ? session : createSessionProxy(session));
public Criteria getExecutableCriteria(Session session) {
銆impl.setSession( (SessionImpl) session ); // 瑕佹眰SessionImpl錛孲pring浼犻掔殑鏄疨roxy
銆return impl;
}
public List findByCriteria(final DetachedCriteria detachedCriteria) {
銆return (List) getHibernateTemplate().execute(new HibernateCallback() {
銆銆public Object doInHibernate(Session session) throws HibernateException {
銆銆銆Criteria criteria = detachedCriteria.getExecutableCriteria(session);
銆銆銆return criteria.list();
銆銆}
銆}, true);
}
]]>
{
//鍏堝姞杞界壒瀹氱殑瀹炰緥
Object p = getHibernateTemplate().load( Person.class , new Integer( personid));
//鍒犻櫎鐗瑰畾瀹炰緥
getHibernateTemplate().delete (p);
}
2 錛宒eleteAll ( Collection entities ) : 鍒犻櫎闆嗗悎鍐呭叏閮ㄦ寔涔呭寲綾誨疄渚?/p>
Public List getPersons()
{
//榪斿洖Person鐨勫叏閮ㄥ疄渚?br />
return getHibernateTemplate().find ( " from Person " );
}
{
//榪斿洖鐗瑰畾涓婚敭瀵瑰簲鐨凱erson瀹炰緥
return (Person)getHibernateTemplate().get (Person.class , new Integer(person id));
}
6 錛宻ave ( Object entity ) : 淇濆瓨鏂扮殑瀹炰緥
HibernateTemplate鐨?鏇寸伒媧?鐨勭敤娉?錛?br />
鏇寸伒媧葷殑璁塊棶鏄氳繃浠ヤ笅涓や釜鏂規硶瀹屾垚鐨?
Object execute ( HibernateCallback action ) ;
List execute ( HibernateCallback action );
榪欎袱涓柟娉曢兘闇瑕佷竴涓狧ibernateCallback鐨勫疄渚嬶紝鍙互鍦ㄤ換浣曟湁鏁堢殑hibernate鏁版嵁璁塊棶涓嬌鐢ㄣ傜敤娉曠伒媧伙紝瑙e喅浜哠pring灝佽Hibernate鍚庣伒媧繪т笉瓚崇殑緙洪櫡銆?HibernateCallback 鏄竴涓帴錛岃鎺ュ彛鍙湁涓涓柟doInHibernate ( org.hibernate.Session session ), 璇ユ柟娉曞彧鏈変竴涓弬鏁癝ession.
public class PersonDaolmpl implements PersonDao
{
// 縐佹湁瀹炰緥鍙橀噺淇濆瓨SessionFactory
private SessionFactory sessionFactory;
// 渚濊禆娉ㄥ叆蹇呴渶鐨剆etter 鏂規硶
public void setSessionFactory(SessionFactory sessionFactory)
{
this.sessionFactory = sessionFactory;
}
/**
*閫氳繃浜哄悕鏌ユ壘鎵鏈夊尮閰嶈鍚嶇殑Person 瀹炰緥
* @param name 鍖歸厤鐨勪漢鍚?br />
* @return 鍖歸厤璇ヤ換鍛界殑鍏ㄩ儴Person 闆嗗悎
*/
public List findPersonsByName(final String name)
//鍒涘緩HibernateTemplate瀹炰緥
HibernateTemplate hibernateTemplate = new HibernateTemplate(this.sessionFactory);
//榪斿洖HibernateTemplate鐨別xecute 鐨勭粨鏋?/span>
return (List) hibernateTemplate.execute (
//鍒涘緩鍖垮悕鍐呴儴綾?/span>
new HibernateCallback ()
public Object doInHibernate (Session session)
throws Hibernate Exception
{
//浣跨敤鏉′歡鏌ヨ鐨勬柟娉曡繑鍥?/span>
List result = session.createCriteria(Person.class)
.add(Restrictions.like("name", name+ " %") .list ( ) ;
return result;
} ) :
}
}
娉ㄦ剰錛?/span>鍦ㄦ柟娉昫oInHibernate鍐呭彲浠ヨ闂埌Session錛岃session鏄畬鍏ㄧ粦瀹氬埌褰撳墠綰跨▼鐨凷ession瀹炰緥錛屼繚璇佸湪瀵逛簬澶嶆潅鐨勬寔涔呭眰璁塊棶鏃訛紝渚濈劧鍙互浣跨敤Hibernate鐨勮闂柟寮忋?
]]>
]]>
* 涓綰х紦瀛樻槸緙撳瓨瀹炰綋瀵硅薄鐨?br />
* 濡傛灉綆$悊涓綰х紦瀛?br />
涓綰х紦瀛樻棤娉曞彇娑堬紝浣嗗彲浠ョ鐞哻lear(),evict()
* 涓綰х紦瀛樺拰session鐨勭敓鍛藉懆鏈熶竴鑷達紝涓綰х紦瀛樹篃鍙玸ession綰х殑緙撳瓨鎴栦簨鍔$駭緙撳瓨
* 濡備綍閬垮厤涓嬈℃уぇ閲忕殑瀹炰綋鏁版嵁鍏ュ簱瀵艱嚦鍐呭瓨婧㈠嚭
鍏坒lush,鍐峜lear
* 濡備綍綆$悊涓綰х紦瀛?br />
load,get,iterate,save閮芥敮鎸佷竴綰х紦瀛?br />
濡傛灉鏁版嵁閲忕壒鍒ぇ錛岃冭檻閲囩敤jdbc瀹炵幇錛屽鏌dbc涔熶笉鑳芥弧瓚寵姹傚彲浠ヨ冭檻閲囩敤鏁版嵁鏈韓鐨勭壒瀹氬鍏ュ伐鍏?
Student student=(Student)session.load(Student.class,1);
System.out.println("studnet.name="+student.getName());
//涓嶄細鍙戝嚭sql錛屽洜涓簂oad浣跨敤緙撳瓨
Student student=(Student)session.load(Student.class,1);
System.out.println("studnet.name="+student.getName());
浜岀駭緙撳瓨
* 浜岀駭緙撳瓨鏄紦瀛樺疄浣撳璞$殑錛屾櫘閫氬睘鎬т笉浼氱紦瀛?br />
* 浜岀駭緙撳瓨鏄繘紼嬬駭鐨勭紦瀛?涔熺О涓篠essionFactory綰х殑緙撳瓨,鍙互琚墍鏈夌殑session鍏變韓
浜岀駭緙撳瓨鐨勭敓鍛藉懆鏈熷拰SessionFactory鏄竴鑷寸殑錛屽彲浠ョ敤SessionFactory綆$悊浜岀駭緙撳瓨
* 浜岀駭緙撳瓨鐨勯厤緗拰浣跨敤
1 鍔犲叆ehcache鐨刯ar鍖?
2 鎷瘋礉ehcache.xml鏂囦歡鍒皊rc鐩綍涓?
3 寮鍚簩綰х紦瀛橈紝榛樿鏄墦寮鐨勩傞厤緗甴ibernate.cfg.xml
hibernate.cfg.xml鏂囦歡
寮鍚簩綰х紦瀛?
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
* 鍦ㄦ槧灝勬枃浠朵腑閲囩敤<cache>鏍囩
<class name="com.my.hibernate.User" table="t_user">
<cache usage="read-only"/>
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="group" column="groupid" cascade="save-update"/>
</class>
<class-cache class="com.bjsxt.hibernate.Studnet" usage="read-only"/>
factory.evict(Student.class);
factory.evict(Student.class,1);
2 GET鍙鑰屼笉鍐欏叆浜岀駭緙撳瓨 session.setCacheMode(CacheMode.GET);
Student student=(Student)session.load(Student.class,1);
session.setCacheMode(CacheMode.PUT);
Student student=(Student)session.load(Student.class,1);
鏌ヨ緙撳瓨
1 璧風敤鏌ヨ緙撳瓨
* 閰嶇疆hibernate.cfg.xml鏂囦歡<property name="hibernate.cache.use_second_level_cache">true</property>
query.setCacheable(true);
]]>
璇誨彇鏁版嵁鏃跺皢鐗堟湰鍙蜂竴鍚岃鍑猴紝涔嬪悗鏇存柊鏁版嵁鏃剁増鏈彿鍔犱竴錛屽鏋滄彁浜ゆ暟鎹椂鐗囨湰鍙峰皬浜?br />
鎴栫瓑浜庢暟鎹簱琛ㄤ腑鐨勭増鏈彿錛屽垯璁や負鏁版嵁鏄繃鏈熺殑錛屽惁鍒欑粰浜堟洿鏂般?br />
private int id;
private String name;
private int count;
private int version;
//version鐗堟湰鍙風敱鏁版嵁搴撶淮鎶わ紝鎴戜滑涓嶇敤綆?/span>
<class name="Inventory" table="t_inventory2" optimistic-lock="version">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="count"/>
<property name="version"/>
</class>
]]>
1 娓呯悊緙撳瓨
2 鎵цsql(涓嶆槸鎻愪氦浜嬪姟)
1 榛樿鍦ㄤ簨鍔℃彁浜ゆ椂
2 鏄懼紡鐨勮皟鐢╢lush
3 鍦ㄦ墽琛屾煡璇㈠墠錛屽錛歩terate
<generator class="uuid"/>
</id>
鍥犱負id鐨勪富閿敓鎴愮瓥鐣ラ噰鐢ㄧ殑鏄痷uid,鎵浠ヨ皟鐢ㄥ畬save鍚庯紝鍙槸灝唘ser瀵硅薄綰沖叆鍒皊ession鐨勭鐞?br />
涓嶄細鍙戝嚭insert璇彞錛屼絾鏄痠d宸茬粡鐢熸垚錛宻ession涓璭xistsInDatebase鐘舵佷負false
session.save(user);
璋冪敤flush,hibernate浼氭竻鐞嗙紦瀛橈紝鎵цsql
濡傛灉鏁版嵁搴撶殑闅旂綰у埆涓烘彁浜よ錛岄偅涔堟垜浠彲浠ョ湅鍒癴lush榪囩殑鏁版嵁
騫朵笖session涓璭xistsInDatebase鐘舵佸彉涓簍rue
session.flush();
榛樿鎯呭喌涓媍ommit鎿嶄綔浼氬厛鎵ц鑰協lush娓呯悊緙撳瓨錛屾墍浠ヤ笉鐢ㄦ樉寮忕殑璋冪敤flush
commit鍚庢暟鎹棤娉曞洖婊?br />
session.getTransaction().commit();
<id name="id">
<generator class="native"/>
</id>
濡傛灉id鐨勪富閿敓鎴愮瓥鐣ラ噰鐢ㄧ殑鏄痭ative,璋冪敤save(user)鏃朵細鍙戝嚭insert璇彞錛岃繑鍥炵敱鏁版嵁搴撶敓鎴愮殑id,
user瀵硅薄綰沖叆鍒皊ession鐨勭鐞?session涓璭xistsInDatebase鐘舵佷負true
-----------------------------------------------------------------
<id name="id">
<generator class="uuid"/>
</id>
session.save(user);
灝唘ser瀵硅薄浠巗ession涓愬嚭,鍗硈ession鐨凟ntiryEntries灞炴т腑閫愬嚭
session.evict(user);//娓呯悊緙撳瓨
鏃犳硶鎴愬姛鎻愪氦錛屽洜涓篽ibernate鍦ㄦ竻鐞嗙紦瀛樻椂錛屽湪session鐨刬nsertions闆嗗悎涓彇鍑簎ser瀵硅薄榪涜insert鎿嶄綔鍚?br />
闇瑕佹洿鏂癳ntityEntries灞炴т腑鐨別xistsnDatabase涓簍rue,鑰屾垜浠噰鐢╡vict宸茬粡灝唘ser浠巗ession涓?br />
閫愬嚭浜?鎵浠ユ壘涓嶅埌鐩稿叧鏁版嵁,鏃犳硶鏇存柊,鎶涘嚭寮傚父
session.getTransaction().commit();
----------------------------------------------------------------
<id name="id">
<generator class="uuid"/>
</id>
session.save(user);
flush鍚巋ibernate浼氭竻鐞嗙紦瀛?浼氬皢user瀵硅薄淇濆瓨鍒版暟鎹簱涓?灝唖ession涓殑insertions涓殑user
娓呴櫎,騫朵笖璁劇疆session涓璭xistsInDatabase鐨勭姸鎬佷負true
session.flush(user);
灝唘ser瀵硅薄浠巗ession涓愬嚭,鍗硈ession鐨凟ntityEntries灞炴т腑閫愬嚭
session.evict(user);//娓呯悊緙撳瓨
鍙互鎴愬姛鎻愪氦錛屽洜涓篽ibernate鍦ㄦ竻鐞嗙紦瀛樻椂錛屽湪session鐨刬nsertions闆嗗悎涓棤娉曟壘鍒皍ser瀵硅薄
鎵浠ュ氨涓嶄細鍙戝嚭insert璇彞,涔熶笉浼氭洿鏂皊ession涓殑existsInDatabase鐨勭姸鎬?br />
session.getTransaction().commit();
-----------------------------------------------------------------
<id name="id">
<generator class="native"/>
</id>
session.save(user);
灝唘ser瀵硅薄浠巗ession涓愬嚭,鍗硈ession鐨凟ntityEntries灞炴т腑閫愬嚭
session.evict(user);//娓呯悊緙撳瓨
鍙互鎴愬姛鎻愪氦錛屽洜涓篽ibernate鍦ㄦ竻鐞嗙紦瀛樻椂錛屽湪session鐨刬nsertions闆嗗悎涓棤娉曟壘鍒皍ser瀵硅薄
鎵浠ュ氨涓嶄細鍙戝嚭insert璇彞,涔熶笉浼氭洿鏂皊ession涓殑existsInDatabase鐨勭姸鎬?br />
session.getTransaction().commit();
-----------------------------------------------------------------
<id name="id">
<generator class="assigned"/>
</id>
session.save(user);
user.setName("寮犱笁");
session.update(user);
User user2=new User();
user2.setId("003");
user2.setName("鏉庡洓");
session.getTransaction().commit();
緇撴灉:
insert into ...
insert into ...
update t_user ...
hibernate鎸夌収save(insert),update,delete欏哄簭鎻愪氦鐩稿叧鐨勬搷浣?br />
-----------------------------------------------------------------
<id name="id">
<generator class="assigned"/>
</id>
session.save(user);
user.setName("寮犱笁");
session.update(user);
鍥犱負鎴戜滑鍦╯ession.update(user)鍚庢墽琛屼簡flush,鎵浠ュ湪浠ommit娓呯悊緙撳瓨鏃舵墽琛宖lush鍓嶇殑sql灝變笉浼氬彂鍑?
session.flush();//鍦ㄨ繖閲宖lush鎿嶄綔灝卞彲浠ヤ簡
User user2=new User();
user2.setId("003");
user2.setName("鏉庡洓");
session.getTransaction().commit();
緇撴灉:
insert into ...
update t_user ...
insert into ...
鎸夌収鎴戜滑鎯寵欏哄簭save(insert),update,save(insert)鐨勯『搴忔彁浜ゆ搷浣?br />
-----------------------------------------------------------------
]]>
1 淇濇寔榛樿,涔熷氨鏄痜etch="select"
<many-to-one name="classes" column="classesid" cascade="save-update"/>
fetch="select",鍙﹀鍙戦佷竴鏉elect璇彞鎶撳彇褰撳墠瀵硅薄鍏寵仈瀹炰綋鎴栭泦鍚?br />
2 璁劇疆fetch="jion"
<many-to-one name="classes" column="classesid" cascade="save-update" fetch="join"/>
fetch="jion",hibernate浼氶氳繃select璇彞浼氫嬌鐢ㄥ鑱旀帴鏉ュ姞杞藉叾鍏寵仈瀹炰綋鎴栭泦鍚?姝ゆ椂lazy浼氬け鏁?br />
------------------------------------------------------------
鎶撳彇絳栫暐(闆嗗悎浠g悊鐨勬壒閲忔姄鍙?
1 淇濇寔榛樿,涔熷氨鏄痜etch="select"
<set name="students" fetch="select">
fetch="select",鍙﹀鍙戦佷竴鏉elect璇彞鎶撳彇褰撳墠瀵硅薄鍏寵仈瀹炰綋鎴栭泦鍚?br />
2 璁劇疆fetch="jion"
<set name="students" fetch="jion">
fetch="jion",hibernate浼氶氳繃select璇彞浼氫嬌鐢ㄥ鑱旀帴鏉ュ姞杞藉叾鍏寵仈瀹炰綋鎴栭泦鍚?姝ゆ椂lazy浼氬け鏁?br />
3 璁劇疆fetch="subselect"
<set name="students" fetch="subselect">
fetch="subselect",鐢ㄤ簬createQuery()鏌ヨ,鍙﹀鍙戦佷竴鏉elect璇彞鎶撳彇鍦ㄥ墠闈㈡煡璇㈠埌鐨勬墍鏈夊疄浣撳璞$殑鍏寵仈闆嗗悎
----------------------------------------------------------------
鎶撳彇絳栫暐,batch-size鍦?lt;class>涓婄殑搴旂敤
batch-size灞炴?鍙兘鎵歸噺鍔犺澆浣撶被,鍙傝:Classes.hbm.xml
<class name="Classes" table="t_classes" batch-size="3">
鍦╤ibernate.cfg.xml涓緗?br /> <property name="hibernate.jdbc.fetch_size">50</property>
鍦╤ibernate涓?component鏄煇涓疄浣撶殑閫昏緫緇勬垚閮ㄥ垎錛屽畠涓庡疄浣撶殑鏍規湰鍖哄埆鏄病鏈塷id錛?br /> component鍙互縐頒負鏄煎璞★紙DDD錛?/p>
閲囩敤component鏄犲皠鐨勫ソ澶勶細瀹冨疄鐜頒簡瀵硅薄妯″瀷鐨勭粏綺掑害鍒掑垎錛屽眰嬈′細鏇村垎鏄庯紝澶嶇敤鐜囦細鏇撮珮
澶嶅悎錛堣仈鍚堬級涓婚敭鏄犲皠
閫氬父灝嗗鍚堜富閿浉鍏崇殑灞炴э紝鍗曠嫭鏀懼埌涓涓被涓?br /> * 姝ょ被蹇呴』瀹炵幇搴忓垪鍖栨帴鍙?br /> * 瑕嗗啓hashcode鍜宔quals鏂規硶
<id/>鏍囩 -涓婚敭
涓婚敭鐢熸垚絳栫暐錛?br />
uuid native 鍜宎ssigned
<id
*name="propertyName" (1)
type="typename" (2)
*column="column_name" (3)
unsaved-value="null|any|none|undefined|id_value" (4)
access="field|property|ClassName" (5)
node="element-name|@attribute-name|element/@attribute|.">
*length (6)
<generator class="generatorClass"/>
</id>
(1) name (鍙?: 鏍囪瘑灞炴х殑鍚嶅瓧銆?
(2) type (鍙?: 鏍囪瘑Hibernate綾誨瀷鐨勫悕瀛椼?
(3) column (鍙?- 榛樿涓哄睘鎬у悕): 涓婚敭瀛楁鐨勫悕瀛椼?
(4) unsaved-value (鍙?- 榛樿涓轟竴涓垏鍚堝疄闄咃紙sensible錛夌殑鍊?: 涓涓壒瀹氱殑鏍囪瘑灞炴у鹼紝鐢ㄦ潵鏍囧織璇ュ疄渚嬫槸鍒氬垰鍒涘緩鐨勶紝灝氭湭淇濆瓨銆?榪欏彲浠ユ妸榪欑瀹炰緥鍜屼粠浠ュ墠鐨剆ession涓杞借繃錛堝彲鑳藉張鍋氳繃淇敼--璇戣呮敞錛?浣嗘湭鍐嶆鎸佷箙鍖栫殑瀹炰緥鍖哄垎寮鏉ャ?
(5) access (鍙?- 榛樿涓簆roperty): Hibernate鐢ㄦ潵璁塊棶灞炴у肩殑絳栫暐銆?
(6) 闀垮害.