锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品永久在线观看,亚洲日产乱码一二三区别 ,亚洲综合自拍成人http://m.tkk7.com/paulwong/category/11301.htmlzh-cnSat, 15 Jan 2022 00:37:33 GMTSat, 15 Jan 2022 00:37:33 GMT60JPA姒傝http://m.tkk7.com/paulwong/archive/2016/06/04/430775.htmlpaulwongpaulwongSat, 04 Jun 2016 08:08:00 GMThttp://m.tkk7.com/paulwong/archive/2016/06/04/430775.htmlhttp://m.tkk7.com/paulwong/comments/430775.htmlhttp://m.tkk7.com/paulwong/archive/2016/06/04/430775.html#Feedback0http://m.tkk7.com/paulwong/comments/commentRss/430775.htmlhttp://m.tkk7.com/paulwong/services/trackbacks/430775.html

1 JPA姒傝堪

JPA錛圝ava Persistence API錛孞ava鎸佷箙鍖朅PI錛夛紝瀹氫箟浜嗗璞?鍏崇郴鏄犲皠錛圤RM錛変互鍙婂疄浣撳璞℃寔涔呭寲鐨勬爣鍑嗘帴鍙c?/p>

JPA鏄疛SR-220錛圗JB3.0錛夎鑼冪殑涓閮ㄥ垎錛屽湪JSR-220涓瀹氬疄浣撳璞★紙EntityBean錛夌敱JPA榪涜鏀寔銆?/p>

鎵浠PA涓嶅眬闄愪簬EJB3.0錛岃屾槸浣滀負POJO鎸佷箙鍖栫殑鏍囧噯瑙勮寖錛屽彲浠ヨ劚紱誨鍣ㄧ嫭绔嬭繍琛岋紝寮鍙戝拰嫻嬭瘯鏇村姞鏂逛究銆?/p>

JPA鍦ㄥ簲鐢ㄤ腑鐨勪綅緗涓嬪浘鎵紺猴細

 

JPA緇存姢涓涓狿ersistence Context錛堟寔涔呭寲涓婁笅鏂囷級錛屽湪鎸佷箙鍖栦笂涓嬫枃涓淮鎶ゅ疄浣撶殑鐢熷懡鍛ㄦ湡銆備富瑕佸寘鍚笁涓柟闈㈢殑鍐呭錛?/p>

  1. ORM鍏冩暟鎹侸PA鏀寔annotion鎴杧ml涓ょ褰㈠紡鎻忚堪瀵硅薄-鍏崇郴鏄犲皠銆?/li>
  2. 瀹炰綋鎿嶄綔API銆傚疄鐜板瀹炰綋瀵硅薄鐨凜RUD鎿嶄綔銆?/li>
  3. 鏌ヨ璇█銆傜害瀹氫簡闈㈠悜瀵硅薄鐨勬煡璇㈣璦JPQL錛圝ava Persistence Query Language錛夈?/li>

JPA鐨勪富瑕丄PI閮藉畾涔夊湪javax.persistence鍖呬腑銆傚鏋滀綘鐔熸倝Hibernate錛屽彲浠ュ緢瀹規槗鍋氬嚭瀵瑰簲錛?/p>
 
org.hibernatejavax.persistence璇存槑
cfg.ConfigurationPersistence璇誨彇閰嶇疆淇℃伅
SessionFactoryEntityManagerFactory鐢ㄤ簬鍒涘緩浼氳瘽/瀹炰綋綆$悊鍣ㄧ殑宸ュ巶綾?/td>
SessionEntityManager鎻愪緵瀹炰綋鎿嶄綔API錛岀鐞嗕簨鍔★紝鍒涘緩鏌ヨ
TransactionEntityTransaction綆$悊浜嬪姟
QueryQuery鎵ц鏌ヨ

2 瀹炰綋鐢熷懡鍛ㄦ湡

瀹炰綋鐢熷懡鍛ㄦ湡鏄疛PA涓潪甯擱噸瑕佺殑姒傚康錛屾弿榪頒簡瀹炰綋瀵硅薄浠庡垱寤哄埌鍙楁帶銆佷粠鍒犻櫎鍒版父紱葷殑鐘舵佸彉鎹€傚瀹炰綋鐨勬搷浣滀富瑕佸氨鏄敼鍙樺疄浣撶殑鐘舵併?/p>

JPA涓疄浣撶殑鐢熷懡鍛ㄦ湡濡備笅鍥撅細

  1. New錛屾柊鍒涘緩鐨勫疄浣撳璞★紝娌℃湁涓婚敭(identity)鍊?/li>
  2. Managed錛屽璞″浜嶱ersistence Context(鎸佷箙鍖栦笂涓嬫枃錛変腑錛岃EntityManager綆$悊
  3. Detached錛屽璞″凡緇忔父紱誨埌Persistence Context涔嬪錛岃繘鍏pplication Domain
  4. Removed, 瀹炰綋瀵硅薄琚垹闄?/li>

EntityManager鎻愪緵涓緋誨垪鐨勬柟娉曠鐞嗗疄浣撳璞$殑鐢熷懡鍛ㄦ湡錛屽寘鎷細

  1. persist, 灝嗘柊鍒涘緩鐨勬垨宸插垹闄ょ殑瀹炰綋杞彉涓篗anaged鐘舵侊紝鏁版嵁瀛樺叆鏁版嵁搴撱?/li>
  2. remove錛屽垹闄ゅ彈鎺у疄浣?/li>
  3. merge錛屽皢娓哥瀹炰綋杞彉涓篗anaged鐘舵侊紝鏁版嵁瀛樺叆鏁版嵁搴撱?/li>

濡傛灉浣跨敤浜嗕簨鍔$鐞嗭紝鍒欎簨鍔$殑commit/rollback涔熶細鏀瑰彉瀹炰綋鐨勭姸鎬併?/p>

3 瀹炰綋鍏崇郴鏄犲皠錛圤RM錛?/h2>

3.1 鍩烘湰鏄犲皠

 
瀵硅薄绔?/th>鏁版嵁搴撶annotion鍙塧nnotion
ClassTable@Entity@Table(name="tablename")
propertycolumn@Column(name = "columnname")
propertyprimary key@Id@GeneratedValue 璇﹁ID鐢熸垚絳栫暐
propertyNONE@Transient 

3.2 ID鐢熸垚絳栫暐

ID瀵瑰簲鏁版嵁搴撹〃鐨勪富閿紝鏄繚璇佸敮涓鎬х殑閲嶈灞炴с侸PA鎻愪緵浜嗕互涓嬪嚑縐岻D鐢熸垚絳栫暐

  1. GeneratorType.AUTO 錛岀敱JPA鑷姩鐢熸垚
  2. GenerationType.IDENTITY錛屼嬌鐢ㄦ暟鎹簱鐨勮嚜澧為暱瀛楁錛岄渶瑕佹暟鎹簱鐨勬敮鎸侊紙濡係QL Server銆丮ySQL銆丏B2銆丏erby絳夛級
  3. GenerationType.SEQUENCE錛屼嬌鐢ㄦ暟鎹簱鐨勫簭鍒楀彿錛岄渶瑕佹暟鎹簱鐨勬敮鎸侊紙濡侽racle錛?/li>
  4. GenerationType.TABLE錛屼嬌鐢ㄦ寚瀹氱殑鏁版嵁搴撹〃璁板綍ID鐨勫闀?闇瑕佸畾涔変竴涓猅ableGenerator錛屽湪@GeneratedValue涓紩鐢ㄣ備緥濡傦細

    @TableGenerator( name="myGenerator", table="GENERATORTABLE", pkColumnName = "ENTITYNAME", pkColumnValue="MyEntity", valueColumnName = "PKVALUE", allocationSize=1 )

    @GeneratedValue(strategy = GenerationType.TABLE,generator="myGenerator")

3.3 鍏寵仈鍏崇郴

JPA瀹氫箟浜唎ne-to-one銆乷ne-to-many銆乵any-to-one銆乵any-to-many 4縐嶅叧緋匯?/p>

瀵逛簬鏁版嵁搴撴潵璇達紝閫氬父鍦ㄤ竴涓〃涓褰曞鍙︿竴涓〃鐨勫閿叧鑱旓紱瀵瑰簲鍒板疄浣撳璞★紝鎸佹湁鍏寵仈鏁版嵁鐨勪竴鏂圭О涓簅wning-side錛屽彟涓鏂圭О涓篿nverse-side銆?/p>

涓轟簡緙栫▼鐨勬柟渚匡紝鎴戜滑緇忓父浼氬笇鏈涘湪inverse-side涔熻兘寮曠敤鍒皁wning-side鐨勫璞★紝姝ゆ椂灝辨瀯寤轟簡鍙屽悜鍏寵仈鍏崇郴銆?鍦ㄥ弻鍚戝叧鑱斾腑錛岄渶瑕佸湪inverse-side瀹氫箟mappedBy灞炴э紝浠ユ寚鏄庡湪owning-side鏄摢涓涓睘鎬ф寔鏈夌殑鍏寵仈鏁版嵁銆?/p>

瀵瑰叧鑱斿叧緋繪槧灝勭殑瑕佺偣濡備笅錛?/p>
 
鍏崇郴綾誨瀷Owning-SideInverse-Side
one-to-one@OneToOne@OneToOne(mappedBy="othersideName")
one-to-many / many-to-one@ManyToOne@OneToMany(mappedBy="xxx")
many-to-many@ManyToMany@ManyToMany(mappedBy ="xxx")

鍏朵腑 many-to-many鍏崇郴鐨刼wning-side鍙互浣跨敤@JoinTable澹版槑鑷畾涔夊叧鑱旇〃錛屾瘮濡侭ook鍜孉uthor涔嬮棿鐨勫叧鑱旇〃錛?/p>

@JoinTable(name = "BOOKAUTHOR", joinColumns = { @JoinColumn(name = "BOOKID", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "AUTHORID", referencedColumnName = "id") })

鍏寵仈鍏崇郴榪樺彲浠ュ畾鍒跺歡榪熷姞杞藉拰綰ц仈鎿嶄綔鐨勮涓猴紙owning-side鍜宨nverse-side鍙互鍒嗗埆璁劇疆錛夛細

閫氳繃璁劇疆fetch=FetchType.LAZY 鎴?fetch=FetchType.EAGER鏉ュ喅瀹氬叧鑱斿璞℃槸寤惰繜鍔犺澆鎴栫珛鍗沖姞杞姐?/p>

閫氳繃璁劇疆cascade={options}鍙互璁劇疆綰ц仈鎿嶄綔鐨勮涓猴紝鍏朵腑options鍙互鏄互涓嬬粍鍚堬細

  • CascadeType.MERGE 綰ц仈鏇存柊
  • CascadeType.PERSIST 綰ц仈淇濆瓨
  • CascadeType.REFRESH 綰ц仈鍒鋒柊
  • CascadeType.REMOVE 綰ц仈鍒犻櫎
  • CascadeType.ALL 綰ц仈涓婅堪4縐嶆搷浣?/li>

3.4 緇ф壙鍏崇郴

JPA閫氳繃鍦ㄧ埗綾誨鍔燖Inheritance(strategy=InheritanceType.xxx)鏉ュ0鏄庣戶鎵垮叧緋匯侫鏀寔3縐嶇戶鎵跨瓥鐣ワ細

  1. 鍗曡〃緇ф壙錛圛nheritanceType.SINGLETABLE錛夛紝鎵鏈夌戶鎵挎爲涓婄殑綾誨叡鐢ㄤ竴寮犺〃錛屽湪鐖剁被鎸囧畾錛?/sub>@DiscriminatorColumn錛夊0鏄庡茍鍦ㄦ瘡涓被鎸囧畾@DiscriminatorValue鏉ュ尯鍒嗙被鍨嬨?/li>
  2. 綾昏〃緇ф壙錛圛nheritanceType.JOINED錛夛紝鐖跺瓙綾誨叡鍚岀殑閮ㄥ垎鍏敤涓寮犺〃錛屽叾浣欓儴鍒嗕繚瀛樺埌鍚勮嚜鐨勮〃錛岄氳繃join榪涜鍏寵仈銆?/li>
  3. 鍏蜂綋琛ㄧ戶鎵匡紙InheritanceType.TABLEPERCLASS)錛屾瘡涓叿浣撶被鏄犲皠鍒拌嚜宸辯殑琛ㄣ?/li>

鍏朵腑1鍜?鑳藉鏀寔澶氭侊紝浣嗘槸1闇瑕佸厑璁稿瓧孌典負NULL錛?闇瑕佸涓狫OIN鍏崇郴錛?鏈閫傚悎鍏崇郴鏁版嵁搴擄紝瀵瑰鎬佹敮鎸佷笉濂姐傚叿浣撳簲鐢ㄦ椂鏍規嵁闇瑕佸彇鑸嶃?/p>

4 浜嬩歡鍙婄洃鍚?/h2>

閫氳繃鍦ㄥ疄浣撶殑鏂規硶涓婃爣娉ˊPrePersist錛孈PostPersist絳夊0鏄庡嵆鍙湪浜嬩歡鍙戠敓鏃惰Е鍙戣繖浜涙柟娉曘?/p>

5 Query Language 鏌ヨ璇█

JPA鎻愪緵涓ょ鏌ヨ鏂瑰紡錛屼竴縐嶆槸鏍規嵁涓婚敭鏌ヨ錛屼嬌鐢‥ntityManager鐨刦ind鏂規硶錛?/p>

T find(Class entityClass, Object primaryKey)

鍙︿竴縐嶅氨鏄嬌鐢↗PQL鏌ヨ璇█銆侸PQL鏄畬鍏ㄩ潰鍚戝璞$殑錛屽叿澶囩戶鎵褲佸鎬佸拰鍏寵仈絳夌壒鎬э紝鍜宧ibernate HQL寰堢浉浼箋?/p>

浣跨敤EntityManager鐨刢reateQuery鏂規硶錛?/p>

Query createQuery(String qlString)

5.1 浣跨敤鍙傛暟

鍙互鍦↗PQL璇彞涓嬌鐢ㄥ弬鏁般侸PQL鏀寔鍛藉悕鍙傛暟鍜屼綅緗弬鏁頒袱縐嶅弬鏁幫紝浣嗘槸鍦ㄤ竴鏉PQL璇彞涓墍鏈夌殑鍙傛暟鍙兘浣跨敤鍚屼竴縐嶇被鍨嬨?/p>

涓句緥濡備笅錛?/p>

  • 鍛戒護鍙傛暟

Query query = em.createQuery("select p from Person p where p.personid=:Id"); query.setParameter("Id",new Integer(1));

  • 浣嶇疆鍙傛暟

Query query = em.createQuery("select p from Person p where p.personid=?1"); query.setParameter(1,new Integer(1));

5.2 鍛藉悕鏌ヨ

濡傛灉鏌愪釜JPQL璇彞闇瑕佸湪澶氫釜鍦版柟浣跨敤錛岃繕鍙互浣跨敤@NamedQuery 鎴栬?@NamedQueries鍦ㄥ疄浣撳璞′笂棰勫畾涔夊懡鍚嶆煡璇€?/p>

鍦ㄩ渶瑕佽皟鐢ㄧ殑鍦版柟鍙寮曠敤璇ユ煡璇㈢殑鍚嶅瓧鍗沖彲銆?/p>

渚嬪錛?/p>

@NamedQuery(name="getPerson", query= "FROM Person WHERE personid=?1")

@NamedQueries({ @NamedQuery(name="getPerson1", query= "FROM Person WHERE personid=?1"), @NamedQuery(name="getPersonList", query= "FROM Person WHERE age>?1") })

Query query = em.createNamedQuery("getPerson");

5.3 鎺掑簭

JPQL涔熸敮鎸佹帓搴忥紝綾諱技浜嶴QL涓殑璇硶銆備緥濡傦細 Query query = em.createQuery("select p from Person p order by p.age, p.birthday desc");

5.4 鑱氬悎鏌ヨ

JPQL鏀寔AVG銆丼UM銆丆OUNT銆丮AX銆丮IN浜斾釜鑱氬悎鍑芥暟銆備緥濡傦細

Query query = em.createQuery("select max(p.age) from Person p"); Object result = query.getSingleResult(); String maxAge = result.toString();

5.5 鏇存柊鍜屽垹闄?/h3>

JPQL涓嶄粎鐢ㄤ簬鏌ヨ錛岃繕鍙互鐢ㄤ簬鎵歸噺鏇存柊鍜屽垹闄ゃ?/p>

濡傦細

Query query = em.createQuery("update Order as o set o.amount=o.amount+10"); //update 鐨勮褰曟暟 int result = query.executeUpdate();

Query query = em.createQuery("delete from OrderItem item where item.order in(from Order as o where o.amount<100)"); query.executeUpdate();

query = em.createQuery("delete from Order as o where o.amount<100"); query.executeUpdate();//delete鐨勮褰曟暟

5.6 鏇村

涓嶴QL綾諱技錛孞PQL榪樻秹鍙婂埌鏇村鐨勮娉曪紝鍙互鍙傝冿細http://docs.oracle.com/cd/E11035_01/kodo41/full/html/ejb3_langref.html

6 浜嬪姟綆$悊

JPA鏀寔鏈湴浜嬪姟綆$悊錛圧ESOURCELOCAL錛夊拰瀹瑰櫒浜嬪姟綆$悊錛圝TA錛夛紝瀹瑰櫒浜嬪姟綆$悊鍙兘鐢ㄥ湪EJB/Web瀹瑰櫒鐜涓?/p>

浜嬪姟綆$悊鐨勭被鍨嬪彲浠ュ湪persistence.xml鏂囦歡涓殑“transaction-type”鍏冪礌閰嶇疆銆?/p>

JPA涓氳繃EntityManager鐨刧etTransaction()鏂規硶鑾峰彇浜嬪姟鐨勫疄渚嬶紙EntityTransaction錛夛紝涔嬪悗鍙互璋冪敤浜嬪姟鐨刡egin()銆乧ommit()銆乺ollback()鏂規硶銆?/p>

Date: 2012-12-30 16:46:29 CST

Author: Holbrook

Org version 7.8.11 with Emacs version 24



paulwong 2016-06-04 16:08 鍙戣〃璇勮
]]>
S2SH閾炬帴涓嶅叧闂?/title><link>http://m.tkk7.com/paulwong/archive/2013/06/07/400353.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 07 Jun 2013 07:09:00 GMT</pubDate><guid>http://m.tkk7.com/paulwong/archive/2013/06/07/400353.html</guid><wfw:comment>http://m.tkk7.com/paulwong/comments/400353.html</wfw:comment><comments>http://m.tkk7.com/paulwong/archive/2013/06/07/400353.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/paulwong/comments/commentRss/400353.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/paulwong/services/trackbacks/400353.html</trackback:ping><description><![CDATA[涓濂桽2SH鐨勫簲鐢紝鐜扮敤鍗曠嚎紼嬶紝榪炵畫鍙?000涓姹傦紝鐢ㄧ殑DBCP閾炬帴姹狅紝緇撴灉鎶ユ暟鎹簱閾炬帴涓嶅鐢細<br /> <br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->ERROR <span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">org.hibernate.util.JDBCExceptionReporter</span><span style="color: #800000; font-weight: bold; ">]</span> - Cannot get a connection, pool error Timeout waiting for idle object</div><br />鍦↗AVA鍔犱笂LOG錛?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->log.info("active: " + dataSource.getNumActive() + " (max: "<br />                + dataSource.getMaxActive() + ")   " + "idle: " + dataSource.getNumIdle()<br />                + "(max: " + dataSource.getMaxIdle() + ")");</div><br />緇撴灉鏄劇ず涓猴細<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->active: 25 (max: 100)   idle: 0(max: 30)</div><br />active鐨勬暟閲忎竴鐩村鍔狅紝浣唅dle鐨勬暟閲忎竴鐩翠負0銆傚綋紼嬪簭鍚戦摼鎺ユ睜瑕侀摼鎺ョ殑鏃跺欙紝濡傛灉姹犳病鏈夛紝灝變細鏂板緩涓涓紝active鏁板氨浼氬姞1錛屽叧闂摼鎺ュ悗錛岄摼鎺ヤ細榪斿洖姹狅紝idle鏁板姞1銆俰dle涓?鍒欒〃紺烘睜閲屾病鏈夐摼鎺ャ?br /><br />榪欐牱璇存槑閾炬帴涓鐩村湪鍒涘緩錛屾病鏈夊叧闂斁鍥炴睜閲屻備絾閾炬帴鏄敱SPRING鍜孒IBERNATE綆$悊鐨勶紝浠g爜涓病鏈夊叧闂摼鎺ョ殑璇彞銆備箣鍚庤瘯浜哊澶氶厤緗紝閮借繕娌¤В鍐籌紝濡傚鍔爉axActive鏁扮瓑銆傛渶鍚庯紝鍔犱笂榪欎竴琛岋紝闂鎵嶇粓浜庤В鍐籌細<br /><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; "><</span><span style="color: #800000; ">prop </span><span style="color: #FF0000; ">key</span><span style="color: #0000FF; ">="hibernate.connection.release_mode"</span><span style="color: #0000FF; ">></span>after_transaction<span style="color: #0000FF; "></</span><span style="color: #800000; ">prop</span><span style="color: #0000ff;">></span></div><br />榪欓噷榛樿鍊兼槸auto錛屽鏋滄槸鐢↗TA浜嬪姟鎵嶉傜敤錛屽鏋滄槸JDBC浜嬪姟錛屽氨鍙兘鐢╝fter_transaction銆?br /><br />榪欐牱姣忔浜嬪姟緇撴潫鍚庯紝灝變細鍏抽棴閾炬帴榪斿洖閾炬帴姹犮?br /><img src ="http://m.tkk7.com/paulwong/aggbug/400353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/paulwong/" target="_blank">paulwong</a> 2013-06-07 15:09 <a href="http://m.tkk7.com/paulwong/archive/2013/06/07/400353.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Hibernate Toolshttp://m.tkk7.com/paulwong/archive/2012/06/10/380435.htmlpaulwongpaulwongSun, 10 Jun 2012 02:21:00 GMThttp://m.tkk7.com/paulwong/archive/2012/06/10/380435.htmlhttp://m.tkk7.com/paulwong/comments/380435.htmlhttp://m.tkk7.com/paulwong/archive/2012/06/10/380435.html#Feedback0http://m.tkk7.com/paulwong/comments/commentRss/380435.htmlhttp://m.tkk7.com/paulwong/services/trackbacks/380435.htmlHibernate Tools鏄敱JBoss鎺ㄥ嚭鐨勪竴涓狤clipse緇煎悎寮鍙戝伐鍏鋒彃浠訛紝璇ユ彃浠跺彲浠ョ畝鍖朞RM妗嗘灦Hibernate錛屼互鍙奐Boss Seam錛孍JB3絳夌殑寮鍙戝伐浣溿侶ibernate Tools鍙互浠nt Task浠ュ強Eclipse鎻掍歡鐨勫艦寮忚繍琛屻?br />

Hibernate Tools Eclipse鎻掍歡鐨勭壒寰?/h3>Hibernate Tools Eclipse鎻掍歡鍏鋒湁浠ヤ笅鐗瑰緛鎴栧姛鑳斤細
Mapping Editor錛堟槧灝勬枃浠剁紪杈戝櫒錛夛細璇ョ紪杈戝櫒鍙互鐢ㄦ潵緙栬緫Hibernate XML鏄犲皠鏂囦歡錛屾彁渚涗唬鐮佽嚜鍔ㄨˉ鍏紝璇硶楂樹寒鍔熻兘銆?
- 綾誨悕鐨勮嚜鍔ㄨˉ鍏?
- 灞炴?琛ㄧ殑鍒楀悕鑷姩琛ュ叏

Hibernate Console錛圚ibernate鎺у埗鍙幫級錛?/strong>瀹冩彁渚涗竴涓叏鏂扮殑Eclipse Perspective紿楀彛錛屽彲浠ユ墽琛孒QL錛屽茍鏌ョ湅鏌ヨ鐨勭粨鏋溿傝繖鏄竴涓潪甯鎬究鍒╃殑宸ュ叿錛屽彲浠ョ敤鏉ラ獙璇丠QL鐨勮娉曟槸鍚︽紜?

Configuration Wizards and Code generation錛圚ibernate閰嶇疆鏂囦歡hibernate.cfg.xml鍒涘緩瀵艱埅錛屼互鍙婁唬鐮佺敓鎴愬櫒錛夛細鏀?鎸佸畬鍏ㄥ弽鍚戠敓鎴愬姛鑳斤紝鍙互浠庡凡鏈夌殑鏁版嵁搴撶敓鎴怘ibernate閰嶇疆鏂囦歡hibernate.cfg.xml錛屽悓鏃舵敮鎸?click-and- generate"鏂瑰紡鐢熸垚Java浠g爜(Hibernate POJOs)錛孌AO錛孹ML鏄犲皠鏂囦歡錛?hbm.xml錛夛紝浠ュ強schema 鏂囨。錛?hml錛夌瓑鏂囦歡銆?

Eclipse JDT integration錛堜唬鐮佽ˉ鍏級錛?/strong>璇ュ伐鍏鋒敮鎸丣ava浠g爜涓殑HQL杈撳叆琛ュ叏錛屼互鍙婂Java浠g爜涓殑HQL璇硶鍔犱互鍚堟硶鎬ч獙璇併?

Hibernate Tools鐨勪嬌鐢?/h3>- Hibernate鐨勯厤緗枃浠秇ibernate.cfg.xml鐨勭敓鎴?/strong>
姝ラ錛?
1錛塃clipse鐨勮彍鍗曪細閫夋嫨[File] -> [New] -> [Other] -> [Hibernate/Hibernate Configuration file (cfg.xml) ]錛?#8220;Next”鎸夐挳
2錛夎緭鍏?[Database dialect] 錛孾Driver Class]錛孾Connection URL]錛屼互鍙奫DB鐢ㄦ埛鍚峕錛孾瀵嗙爜]絳?
3錛夋寜涓媅Finish]鎸夐挳錛屽垯鑷姩鐢熸垚hibernate.cfg.xml鏂囦歡銆?
** "Create Console Configuration" checkbox榛樿涓洪夋嫨鐘舵併傝閫夋嫨鐨勬儏鍐典笅錛屽垯榪涘叆“Hibernate Console Configuration ”錛圚ibernate Console錛夎緗?鍒涘緩欏甸潰銆?

- 璁劇疆Hibernate Console

Hibernate Tools鏀寔鍒涘緩澶氫釜Hibernate Console銆?
1錛塃clipse鑿滃崟錛氶夋嫨[File] -> [New] -> [Other] -> [Hibernate/Hibernate Console Configuration]錛?#8220;Next”鎸夐挳
2錛夊湪鎵鏄劇ず鐨勭敾闈笂杈撳叆Hibernate Console鐨勫悕縐癧Name]錛岀洰鏍囬」鐩悕[Project]錛孒ibernate閰嶇疆鏂囦歡錛坔ibernate.cfg.xml錛夌殑璺緞[Configuration file]
3錛夋寜[Finish]鎸夐挳錛屽垯鍒涘緩Hibernate Console錛屽悓鏃舵樉紺哄湪"Hibernate Configurations"瑙嗗浘涓?

- Reverse engineering and code generation錛?/strong>鍒╃敤"click-and-generate" Reverse Engineering浠ュ強浠g爜鐢熸垚鍔熻兘鑷姩鐢熸垚鎵闇浠g爜銆?
※浣跨敤Hibernate code generation錛圚ibernate浠g爜鐢熸垚鍣級涔嬪墠錛岄渶瑕佸厛閰嶇疆/鍒涘緩Hibernate Console銆?
1錛夊彲浠ヤ粠Hibernate 鐨凾ool Bar錛屾垨"Run/Hibernate Code Generation"鑿滃崟鍚姩Hibernate浠g爜鐢熸垚鍣ㄣ?
2錛夊湪鎵鏄劇ず鐨勭敾闈笂錛岃緭鍏?鍒涘緩濂界殑Hibernate鎺у埗鍙板悕縐癧Console Configuration]錛岃緭鍑鴻礬寰勩孫utput directory銆嶇瓑淇℃伅銆?
** 鍏跺畠鍙互瀹為檯鎯呭喌鍔犱互璁劇疆銆?
3錛夋墦寮Explore鏍囩錛岃緗渶瑕佺敓鎴愮殑浠g爜綾誨瀷錛圖omain code, DAO絳夛級
4錛夎緗畬鎴愪箣鍚庯紝鎸変笅[Run]鎸夐挳
鏍規嵁涓嶅悓鐨勯厤緗紝灝嗚嚜鍔ㄧ敓鎴怘ibernate鍏寵仈鏂囦歡錛孍JB3錛孞Boss Seam絳夋枃浠躲?

Hibernate Tools鍏跺畠鍙傝冭祫鏂?/h3>Hibernate Tools Reference Guide  [瀹樻柟鏂囨。]
Hibernate Tools Eclipse Plugins  [瀹樻柟鏂囨。錛孒ibernate Tools Eclipse鎻掍歡]

paulwong 2012-06-10 10:21 鍙戣〃璇勮
]]>鏁版嵁搴撶殑閿佹満鍒?/title><link>http://m.tkk7.com/paulwong/archive/2012/04/19/375298.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 19 Apr 2012 09:56:00 GMT</pubDate><guid>http://m.tkk7.com/paulwong/archive/2012/04/19/375298.html</guid><wfw:comment>http://m.tkk7.com/paulwong/comments/375298.html</wfw:comment><comments>http://m.tkk7.com/paulwong/archive/2012/04/19/375298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/paulwong/comments/commentRss/375298.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/paulwong/services/trackbacks/375298.html</trackback:ping><description><![CDATA[<div>鍦ㄨ繘琛孲ELECT鎿嶄綔鏃訛紝閫氬父鎺ヤ笅鏉ヤ細榪涜UPADTE鐨勬搷浣滐紝濡傛灉甯屾湜COMMIT鍓嶏紝鎵SELECT鐨勬暟鎹笉浼氳鍏朵粬綰跨▼SELECT鍑烘潵錛屽垯涓や釜綰跨▼閮藉姞FOR UPDATE/FOR UPDATE NOWAIT鍏抽敭瀛楋紝榪欐牱鏁版嵁搴撳氨浼氶攣瀹氳繖浜涜褰曪紝鍔犱簡FOR UPDATE鐨勪細榪涜絳夊緟錛岀洿鍒頒笂涓綰跨▼緇撴潫錛屽姞浜咶OR UPDATE NOWAIT鐨勭嚎紼嬪垯鐩存帴鎶涘嚭寮傚父錛岃繖縐嶆満鍒剁О涓烘暟鎹簱鐨勯攣鏈哄埗銆?/div><br />HIBERNATE涓殑瀹炵幇錛?br /><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">LockMode.NONE 錛氭湁緙撳瓨鐢ㄧ紦瀛橈紝娌$紦瀛樺垯浠庢暟鎹簱璇?nbsp;<br />LockMode.READ 錛氱洿鎺ヤ粠鏁版嵁搴撹錛屼笉浣跨敤緙撳瓨鏁版嵁 <br />LockMode.WRITE 錛氬湪insert update鏁版嵁鐨勬椂鍊欙紝HIBERNATE鍐呴儴浣跨敤鐨勩?nbsp;<br />浠ヤ笂3縐嶅潎涓篐IBERNATE綰у埆鐨勯攣錛屼篃灝辨槸緙撳瓨綰у埆鐨勯攣銆?nbsp;<br /><br />涓嬮潰2縐嶄負鏁版嵁搴撶駭鍒殑閿侊細 <br />LockMode.UPGRADE錛氱浉褰撲簬SQL璇彞select for update錛岃select鐨勬暟鎹兘琚暟鎹簱閿佷綇浜嗭紝涓嶈兘琚叾浠栦簨鍔′慨鏀廣?nbsp;<br />LockMode. UPGRADE_NOWAIT 錛氭槸ORACLE鏁版嵁搴撶壒鏈夌殑select for update nowait</span></div><img src ="http://m.tkk7.com/paulwong/aggbug/375298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/paulwong/" target="_blank">paulwong</a> 2012-04-19 17:56 <a href="http://m.tkk7.com/paulwong/archive/2012/04/19/375298.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Using an Example of Sharding with Hibernate http://m.tkk7.com/paulwong/archive/2012/01/04/367875.htmlpaulwongpaulwongWed, 04 Jan 2012 15:21:00 GMThttp://m.tkk7.com/paulwong/archive/2012/01/04/367875.htmlhttp://m.tkk7.com/paulwong/comments/367875.htmlhttp://m.tkk7.com/paulwong/archive/2012/01/04/367875.html#Feedback0http://m.tkk7.com/paulwong/comments/commentRss/367875.htmlhttp://m.tkk7.com/paulwong/services/trackbacks/367875.htmlAMAZON鐨勫叧浜嶩IBERNATE SHARD鐨勪緥瀛愶細
http://aws.amazon.com/articles/0040302286264415

paulwong 2012-01-04 23:21 鍙戣〃璇勮
]]>
HIBERNATE SHARDhttp://m.tkk7.com/paulwong/archive/2012/01/04/367869.htmlpaulwongpaulwongWed, 04 Jan 2012 14:40:00 GMThttp://m.tkk7.com/paulwong/archive/2012/01/04/367869.htmlhttp://m.tkk7.com/paulwong/comments/367869.htmlhttp://m.tkk7.com/paulwong/archive/2012/01/04/367869.html#Feedback0http://m.tkk7.com/paulwong/comments/commentRss/367869.htmlhttp://m.tkk7.com/paulwong/services/trackbacks/367869.html
鍦ㄥ悜澶у璇︾粏浠嬬粛Hibernate Shard涓夌絳栫暐涔嬪墠錛岄鍏堣澶у浜嗚В涓婬ibernate Shard綆浠嬶紝鐒跺悗鍏ㄩ潰浠嬬粛Hibernate Shard涓夌絳栫暐銆?

1. Hibernate Shard綆浠?/strong>
Hibernate Shard澶氭暟鎹簱姘村鉤鍒嗗尯瑙e喅鏂規銆侶ibernate 鐨勪竴涓墿灞曪紝鐢ㄤ簬澶勭悊澶氭暟鎹簱姘村鉤鍒嗗尯鏋舵瀯銆傜敱google宸ョ▼甯?2007騫?鎹愮尞緇?Hibernate紺懼尯銆傜洰鍓嶇増鏈細 3.0.0 beta2錛?鏈彂GA鐗堛傛潯浠訛細Hibernate Core 3.2錛?JDK 5.0

2. 姘村鉤鍒嗗尯鍘熺悊
涓涓簱琛ㄥ Order 瀛樺湪浜庡涓暟鎹簱瀹炰緥涓娿傛寜鐗瑰畾鐨勫垎鍖洪昏緫錛屽皢璇ュ簱琛ㄧ殑鏁版嵁瀛樺偍鍦ㄨ繖浜涘疄渚嬩腑錛屼竴鏉¤褰曠殑涓婚敭 PK錛屽湪鎵鏈夊疄渚嬩腑涓嶅緱閲嶅銆傛按騫沖垎鍖哄湪澶у瀷緗戠珯錛屽ぇ鍨嬩紒涓氬簲鐢ㄤ腑緇忓父閲囩敤銆傜洰鐨勫嚭浜庢搗閲忔暟鎹垎鏁e瓨鍌紝鍒嗘暎鎿嶄綔錛屽垎鏁f煡璇互渚挎彁楂樻暟鎹鐞嗛噺鍜屾暣浣撴暟鎹鐞嗘ц兘銆備嬌鐢細google宸ョ▼甯堢殑璁捐榪樻槸闈炲父濂界殑錛屽畬鍏ㄥ吋瀹?Hibernate鏈韓鐨勪富瑕佹帴鍙c?
org.hibernate.Session  
  org.hibernate.SessionFactory  
  org.hibernate.Criteria  
  org.hibernate.Query 

鍥犳紼嬪簭鍛樺紑鍙戝彉鍖栦笉澶э紝鐢氳嚦涓嶉渶瑕佸叧蹇冨悗鍙頒嬌鐢ㄤ簡鍒嗗尯鏁版嵁搴撱傜▼搴忚縼縐婚棶棰樹笉澶с傝屼笖閰嶇疆涓婃瘮杈冪畝鏄庛?

3. Hibernate Shard涓夌絳栫暐錛?/strong>
◆ShardAccessStrategy錛?鏌ヨ鎿嶄綔鏃訛紝鍒伴偅涓垎鍖烘墽琛屻傞粯璁ゆ彁渚涗袱涓疄鐜幫細
欏哄簭絳栫暐錛歋equentialShardAccessStrategy錛?姣忎釜query鎸夐『搴忓湪鎵鏈夊垎鍖轟笂鎵ц銆?br />騫寵絳栫暐錛歅arallelShardAccessStrategy錛?姣忎釜query浠ュ綰跨▼鏂瑰紡騫跺彂騫寵鐨勫湪鎵鏈夊垎鍖轟笂鎵ц銆傛絳栫暐涓嬶紝闇瑕佷嬌鐢ㄧ嚎紼嬫睜鏈哄埗婊¤凍鐗瑰畾鐨勬ц兘闇瑕侊紝java.util.concurrent.ThreadPoolExecutor.

◆ShardSelectionStrategy錛?鏂板瀵硅薄鏃訛紝瀛樺偍鍒板摢涓垎鍖恒傛鏋墮粯璁ゆ彁渚涗簡涓涓疆璇㈤夋嫨絳栫暐 RoundRobinShardSelectionStrategy錛?浣嗕竴鑸笉榪欐牱浣跨敤銆傞氬父閲囩敤“attribute-based sharding”鏈哄埗錛屽熀浜庡睘鎬у垎鍖恒備竴鑸槸鐢ㄦ埛鏍規嵁琛ㄨ嚜宸卞疄鐜頒竴涓熀浜庡睘鎬у垎鍖虹殑絳栫暐綾籗hardSelectionStrategy 錛屼緥濡傦紝浠ヤ笅WeatherReport鍩轟簬continent灞炴ч夋嫨鍒嗗尯錛? 
public class WeatherReportShardSelectionStrategy implements ShardSelectionStrategy {  
public ShardId selectShardIdForNewObject(Object obj) {  
if(obj instanceof WeatherReport) 
{  
return ((WeatherReport)obj).getContinent().getShardId();  
}
  
throw new IllegalArgumentException();  
}
 

◆ShardResolutionStrategy錛?璇ョ瓥鐣ョ敤浜庢煡鎵懼崟涓璞℃椂錛屽垽鏂畠鍦ㄥ摢涓垨鍝嚑涓垎鍖轟笂銆傞粯璁や嬌鐢?AllShardsShardResolutionStrategy 錛屽彲浠ヨ嚜瀹氫箟渚嬪錛?nbsp; 

public class WeatherReportShardResolutionStrategy extends AllShardsShardResolutionStrategy
{
public WeatherReportShardResolutionStrategy(List<ShardId> shardIds)
{
super(shardIds);
}


public List<ShardId> selectShardIdsFromShardResolutionStrategyData( ShardResolutionStrategyData srsd)
{
if(srsd.getEntityName().equals(WeatherReport.class.getName()))
{
return Continent.getContinentByReportId(srsd.getId()).getShardId();
}

return super.selectShardIdsFromShardResolutionStrategyData(srsd);
}

}


paulwong 2012-01-04 22:40 鍙戣〃璇勮
]]>
Hibernate Generic D.A.O. Frameworkhttp://m.tkk7.com/paulwong/archive/2011/11/26/364870.htmlpaulwongpaulwongFri, 25 Nov 2011 20:23:00 GMThttp://m.tkk7.com/paulwong/archive/2011/11/26/364870.htmlhttp://m.tkk7.com/paulwong/comments/364870.htmlhttp://m.tkk7.com/paulwong/archive/2011/11/26/364870.html#Feedback0http://m.tkk7.com/paulwong/comments/commentRss/364870.htmlhttp://m.tkk7.com/paulwong/services/trackbacks/364870.htmlThe motivation behind the framework

We had worked on a project where we hand-coded all of our DAOs. This produced four irksome difficulties: (1) Method names and implementations were not altogether consistent. (2) It was a pain to make additional columns sortable or filterable, and as a result, a lot of pages lacked good sorting and filtering. (3) Making additional DAOs was tedious and took a fair amount of time. (4) Writing tests for DAOs is tricky and tedious, so no one really did.

This framework aims to ease our troubles.

Why might you consider looking into this framework?

  • Generic DAO: With the sweetness of Java generics, the concept of generic DAOs is not new, and it’s not difficult. However, we’ve put a lot of work into making these easy to use and robust. So if you like the way we’ve done it, then this framework provides ready-made code for you. On the other hand if you’d rather make your own, then simply feel free to look at our source code for ideas and help on a few potentially tricky issues.
  • Search: Search is the most original and sophisticated part of this framework, and it can be used with or without the generic DAO portion of the framework. The search capability is designed around the use-case of a list page with sorting, filtering, column selection and paging. However, its use is certainly not limited to that. The value that the search adds is simpler, more robust querying with less coding and less testing. It is similar to Hibernate Criteria, but it is simpler to use and can easily move across layers of an application including view and even remote layers. Plus is works with both Hibernate and JPA*.
  • Remote DAO (for R.I.A.s?): If you you’re like us, you don’t want to write and configure an individual DAO style remote service for each entity in a R.I.A. or other client-heavy application. This framework may have the solution. We provide utilities and sample code to adapt our single general DAO to any remoting technology interface. Just configure this single remote access point and the client can do any basic CRUD or search operation on any entity. Again, if you don’t like our way of doing things, maybe you can at least get some ideas from our source code.
  • Remote Search (for R.I.A.s?): As mentioned above, the framework can provide a single point for client-server CRUD and search operations. The framework’s search is meant to be able to cross the client-server boundary. So lists and searches in the client application can take advantage of the same easy-to-use features and consistency that the search functionality provides in the server tier or single tier application. This consistency allowed us to create a reusable collection type in Adobe Flex 3 that is associated with a single search object and automatically updates itself from the server according to the search parameters.**

*A fairly simple adapter is required for each JPA provider. Right now we only have an adapter for Hibernate Entity Manager. If anyone would like to contribute an adapter for any other JPA provider (OpenJPA, TopLink, etc.), that would be great.

**If time permits, we would like to eventually post our corresponding Adobe Flex 3 framework and utilities.

More Information

Wiki Documentation: UserGuide

Javadoc: http://hibernate-generic-dao.googlecode.com/svn/trunk/docs/api/index.html

Blog: http://hibernategenericdao.wordpress.com/

Questions and Comments

Please post at http://groups.google.com/group/java-generic-dao.

Code Examples

Creating DAOs for individual model classes:

Simply extend the GenericDAO class with the specific type.


public interface ProjectDAO extends GenericDAO<Project, Long> 

}
 

public class ProjectDAOImpl extends GenericDAOImpl<Project, Long> implements ProjectDAO 

}

The following methods (and several more) are now available on ProjectDAO

Project project = projectDAO.find(projectId);
 List
<Project> list = projectDAO.findAll();
projectDAO.save(project);
projectDAO.remove(project);
projectDAO.removeById(project.getId());

Search search
= new Search();
search.addFilterEqual(
"name", "hibernate-generic-dao");
List
<Project> list = projectDAO.search(search);

int count = projectDAO.count(search);
SearchResult
<Project> result = projectDAO.searchAndCount(search);
list
= result.getResult();
count
= result.getTotalCount();
search.clear();
search.addField(
"rating", Field.OP_AVG);
int avgProjectRating = (Integer) prjoectDAO.searchUnique(search);


A GeneralDAO is also provided with DAO methods for any entity:


public interface GeneralDAO {
public <T> T find(Class<T> type, Serializable id);
public <T> T[] find(Class<T> type, Serializable ids);
public <T> T getReference(Class<T> type, Serializable id);
public <T> T[] getReferences(Class<T> type, Serializable ids);
public boolean save(Object entity); public boolean[] save(Object entities);
public boolean remove(Object entity); public void remove(Object entities);
public boolean removeById(Class<?> type, Serializable id);
public void removeByIds(Class<?> type, Serializable ids);
public <T> List<T> findAll(Class<T> type);
public List search(ISearch search); public Object searchUnique(ISearch search);
public int count(ISearch search); public SearchResult searchAndCount(ISearch search);
public boolean isAttached(Object entity);
public void refresh(Object entities); public void flush();
public Filter getFilterFromExample(Object example);
public Filter getFilterFromExample(Object example, ExampleOptions options); }

Search DTO usage examples


Search search = new Search(Project.class);

//filtering
search.addFilterEqual("name", "hibernate-generic-dao");

search.addFilterLessThan(
"completionDate", new Date());

search.addFilterOr(
Filter.equal(
"name", "Jack"),
Filter.and(
Filter.equal(
"name", "Jill"),
Filter.like(
"location", "%Chicago%"),
Filter.greaterThan(
"age", 5) )
);

search.addFilterIn(
"name", "Jack", "Jill", "Bob");

search.addFilterNot(Filter.in(
"name","Jack", "Jill", "Bob"));

//sorting
search.addSort("name");
search.addSort(
"age", true); //descending

//projection
search.addField("name");
search.addField(
"location");

//or with column operators
search.addField("rating", Field.OP_AVG);
search.addField(
"developerCount", Field.OP_MAX);

//paging
search.setMaxResults(15); //a.k.a. results per page
search.setPage(3);

//controlling eager fetching of relationships
serach.addFetch("owner");
 

Nested properties are also fully supported...


search.addFilterEqua("status.name", "active");
search.addFilterGreaterThan(
"workgroup.manager.salary", 75000.00);
search.addSort(
"status.name");


paulwong 2011-11-26 04:23 鍙戣〃璇勮
]]>JPA浣跨敤memcached鐨?綰х紦瀛樼殑閰嶇疆http://m.tkk7.com/paulwong/archive/2011/02/16/344420.htmlpaulwongpaulwongWed, 16 Feb 2011 03:10:00 GMThttp://m.tkk7.com/paulwong/archive/2011/02/16/344420.htmlhttp://m.tkk7.com/paulwong/comments/344420.htmlhttp://m.tkk7.com/paulwong/archive/2011/02/16/344420.html#Feedback0http://m.tkk7.com/paulwong/comments/commentRss/344420.htmlhttp://m.tkk7.com/paulwong/services/trackbacks/344420.html 1.鍔犲叆hibernate錛峬emcached.jar鍙婄浉鍏砵ar鍖?br /> hibernate-memcached闇瑕佹敮鎸佺殑綾誨簱濡備笅:
hibernate-memcached-.jar ,
memcached-2.1.jar
spy-2.4.jar
commons-codec 1.3 .
slf4j-1.5.0.jar 濡傛灉浣犵殑欏圭洰浣跨敤鐨勬槸Log4j,鍙互鐢?slf4j-log4j12-1.5.0.jar

2.鍦╝pplicationContext.xml涓厤緗?

<bean id="entityManagerFactory"
        class
="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        
<property name="dataSource" ref="dataSource" />
        
<property name="jpaVendorAdapter">
            
<bean
                
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                
<property name="showSql" value="${jpa.showSql}" />
                
<property name="generateDdl" value="${jpa.generateDdl}" />
                
<property name="database">
                    
<util:constant
                        
static-field="org.springframework.orm.jpa.vendor.Database.ORACLE" />
                
</property>
            
</bean>
        
</property>
        
<property name="jpaProperties">
            
<props>
                
<prop key="hibernate.max_fetch_depth">3</prop>
                
<prop key="hibernate.cache.use_second_level_cache">
                    true
                
</prop>
                
<prop key="hibernate.cache.use_structured_entries">
                    true
                
</prop>
                
<prop key="hibernate.cache.use_query_cache">true</prop>
                
<prop key="hibernate.cache.provider_class">
                    com.googlecode.hibernate.memcached.MemcachedCacheProvider
                
</prop>
                
<prop key="hibernate.memcached.servers">
                    10.1.19.132:33001 10.1.19.132:33002 10.1.19.132:33003
                
</prop>
            
</props>
        
</property>
    
</bean>


3.鍦ㄥ疄浣撶被涓婇厤緗紦瀛樼瓥鐣?br />
@org.hibernate.annotations.Cache(usage =CacheConcurrencyStrategy.READ_WRITE)  

涓嬮潰榪欏嚑縐嶆儏鍐靛氨涓嶉傚悎鍔犺澆鍒頒簩綰х紦瀛樹腑:
1.緇忓父琚慨鏀圭殑鏁版嵁
2.緇濆涓嶅厑璁稿嚭鐜板茍鍙戣闂殑鏁版嵁
3.涓庡叾浠栧簲鐢ㄥ叡浜殑鏁版嵁
涓嬮潰榪欏繁縐嶆儏鍐靛悎閫傚姞杞藉埌浜岀駭緙撳瓨涓?
1.鏁版嵁鏇存柊棰戠巼浣?
2.鍏佽鍋跺皵鍑虹幇騫跺彂闂鐨勯潪閲嶈鏁版嵁 
3.涓嶄細琚茍鍙戣闂殑鏁版嵁
4.甯擱噺鏁版嵁
5.涓嶄細琚涓夋柟淇敼鐨勬暟鎹?

paulwong 2011-02-16 11:10 鍙戣〃璇勮
]]>
Hibernate 鐨剆ession.createCriteria鐢ㄦ硶http://m.tkk7.com/paulwong/archive/2009/07/03/285345.htmlpaulwongpaulwongFri, 03 Jul 2009 06:24:00 GMThttp://m.tkk7.com/paulwong/archive/2009/07/03/285345.htmlhttp://m.tkk7.com/paulwong/comments/285345.htmlhttp://m.tkk7.com/paulwong/archive/2009/07/03/285345.html#Feedback0http://m.tkk7.com/paulwong/comments/commentRss/285345.htmlhttp://m.tkk7.com/paulwong/services/trackbacks/285345.html
<many-to-one name="partyTypeBean" column="NATT_ID"
            class
="com.paul..PartyTypeBean" 
            cascade
="none" outer-join="true" not-found="ignore" lazy="false"/>


濡傛灉鏌ヨParty錛屽垯鍏跺叧鑱斿璞artyTypeBean鏄互outer-join鐨勬柟寮忓彇錛岃嫢瑕佽鐩栬繖縐嶆柟寮忥紝鍙噰鐢ㄥ緩鍒悕鐨勬柟寮忥紝濡備笅錛?br />

Criteria criteria = session.createCriteria(PartyBean.class)
                                   .createAlias(
"partyTypeBean""partyTypeBean", Criteria.INNER_JOIN)
                                   .createAlias(
"cafBean""cafBean", Criteria.LEFT_JOIN)
                                   .createAlias(
"countryBean""countryBean", Criteria.INNER_JOIN)
                                   ;




paulwong 2009-07-03 14:24 鍙戣〃璇勮
]]>
閲嶅啓toString(),hashCode()鍜宔quals()鐨勭畝渚挎柟娉?/title><link>http://m.tkk7.com/paulwong/archive/2009/05/08/269598.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 08 May 2009 05:50:00 GMT</pubDate><guid>http://m.tkk7.com/paulwong/archive/2009/05/08/269598.html</guid><wfw:comment>http://m.tkk7.com/paulwong/comments/269598.html</wfw:comment><comments>http://m.tkk7.com/paulwong/archive/2009/05/08/269598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/paulwong/comments/commentRss/269598.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/paulwong/services/trackbacks/269598.html</trackback:ping><description><![CDATA[浣跨敤APACHE鐨凩ANG鍖呬腑鐨勭浉鍏崇被錛屽彲綆鍐欏緢澶氥?br /> <br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_26_146_Open_Image" onclick="this.style.display='none'; Codehighlighter1_26_146_Open_Text.style.display='none'; Codehighlighter1_26_146_Closed_Image.style.display='inline'; Codehighlighter1_26_146_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_26_146_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_26_146_Closed_Text.style.display='none'; Codehighlighter1_26_146_Open_Image.style.display='inline'; Codehighlighter1_26_146_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #000000">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String toString() </span><span id="Codehighlighter1_26_146_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://m.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_26_146_Open_Text"><span style="color: #000000">{   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> ToStringBuilder.reflectionToString(</span><span style="color: #0000ff">this</span><span style="color: #000000">,   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                ToStringStyle.MULTI_LINE_STYLE);   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000">   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />  <br /> <img id="Codehighlighter1_190_258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_190_258_Open_Text.style.display='none'; Codehighlighter1_190_258_Closed_Image.style.display='inline'; Codehighlighter1_190_258_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_190_258_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_190_258_Closed_Text.style.display='none'; Codehighlighter1_190_258_Open_Image.style.display='inline'; Codehighlighter1_190_258_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">boolean</span><span style="color: #000000"> equals(Object o) </span><span id="Codehighlighter1_190_258_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://m.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_190_258_Open_Text"><span style="color: #000000">{   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> EqualsBuilder.reflectionEquals(</span><span style="color: #0000ff">this</span><span style="color: #000000">, o);   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000">   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />  <br /> <img id="Codehighlighter1_292_459_Open_Image" onclick="this.style.display='none'; Codehighlighter1_292_459_Open_Text.style.display='none'; Codehighlighter1_292_459_Closed_Image.style.display='inline'; Codehighlighter1_292_459_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_292_459_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_292_459_Closed_Text.style.display='none'; Codehighlighter1_292_459_Open_Image.style.display='inline'; Codehighlighter1_292_459_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> hashCode() </span><span id="Codehighlighter1_292_459_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://m.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_292_459_Open_Text"><span style="color: #000000">{   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashCodeBuilder(</span><span style="color: #000000">17</span><span style="color: #000000">, </span><span style="color: #000000">37</span><span style="color: #000000">)   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    .append(id)   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    .append(name)   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    .append(state)   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    .toHashCode();   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000">  </span></div> <br /> <br /> <br /> 濡傛灉PO涓湁SET鐨勯泦鍚堝璞★紝騫朵笖閰嶇疆浜咹IBERNATE涓殑lazy="true"錛屽垯綆桯ASHCODE涓嶈兘鐢ㄥ弽灝勭殑鏂規硶錛屽彧鑳戒竴涓睘鎬т竴涓睘鎬х殑绱姞璁$畻HASHCODE錛岄泦鍚圫ET涓嶇畻HASHCODE錛屽惁鍒欎細鎶汱azyInitializationException銆傜戶鎵跨殑瀛愮被鍙互鐢ㄨ繖縐嶆柟娉曞姞浠ヨ鐩栵細<br /> <br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_22_173_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_173_Open_Text.style.display='none'; Codehighlighter1_22_173_Closed_Image.style.display='inline'; Codehighlighter1_22_173_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_22_173_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_22_173_Closed_Text.style.display='none'; Codehighlighter1_22_173_Open_Image.style.display='inline'; Codehighlighter1_22_173_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> hashCode() </span><span id="Codehighlighter1_22_173_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://m.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_22_173_Open_Text"><span style="color: #000000">{   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashCodeBuilder(</span><span style="color: #000000">17</span><span style="color: #000000">, </span><span style="color: #000000">37</span><span style="color: #000000">)   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    .appendSuper(</span><span style="color: #0000ff">super</span><span style="color: #000000">.hashCode())<br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    .append(code)<br /> <img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    .toHashCode();   <br /> <img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000"> </span></div> <br /> <br /> <img src ="http://m.tkk7.com/paulwong/aggbug/269598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/paulwong/" target="_blank">paulwong</a> 2009-05-08 13:50 <a href="http://m.tkk7.com/paulwong/archive/2009/05/08/269598.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>HIBERNATE涓殑瀵硅薄璁捐http://m.tkk7.com/paulwong/archive/2009/05/01/268500.htmlpaulwongpaulwongFri, 01 May 2009 03:57:00 GMThttp://m.tkk7.com/paulwong/archive/2009/05/01/268500.htmlhttp://m.tkk7.com/paulwong/comments/268500.htmlhttp://m.tkk7.com/paulwong/archive/2009/05/01/268500.html#Feedback0http://m.tkk7.com/paulwong/comments/commentRss/268500.htmlhttp://m.tkk7.com/paulwong/services/trackbacks/268500.html
鍦℉IBERNATE鐨勯厤緗枃浠朵腑璞¤繖鏍烽厤緗細


<set name="users" table="user" cascade="all"  inverse="true"  lazy="extra">
            
<key column="room_id"/>
            
<one-to-many class="paul.com.User"/>
</set>

  1. 鎸囧畾users縐佹湁鎴愬憳鐨勭被鍨嬩負SET錛?span style="color: #800000">set name="users"
  2. 鎸囧畾闆嗗悎涓殑瀵硅薄綾誨瀷涓篣ser:<one-to-many class="paul.com.User"/>
  3. 鎸囧畾User瀵瑰簲鐨勮〃錛?span style="color: #ff0000">table="user"
  4. 鎸囧畾澶栭敭錛?span style="color: #0000ff"><key column="room_id"/>
  5. 鎸囧畾濡傛灉鍚屾椂鏂板銆佷慨鏀廣佸垹闄ゅ叧鑱旂殑Room鍜孶ser瀵硅薄鏃訛紝鏄惁闇瑕丠IBERNATE鎵ц涓ゆ鎿嶄綔錛?span style="color: #ff0000">cascade="all"
  6. 鎸囧畾 lazy="extra"鏃?/span>錛屽垯闆嗗悎涓殑鍏冪礌涓嶄細琚竴璧峰彇鍑猴紝鑰屼笖瑕佽SIZE鏃訛紝鍙細鍙戦佷竴鏉OUNT鐨凷QL璇彞鑷沖悗鍙?
  7. 鎸囧畾 inverse="true"鏃訛紝褰撲繚瀛樹竴鐨勫璞℃椂錛屽搴旂殑澶氱殑瀵硅薄涓嶄細鍚屾椂琚繚瀛樸?/li>

濡傛灉瑕佸湪鍙栧緱User瀵硅薄鐨勫悓鏃跺彇寰桼oom瀵硅薄錛屽垯鍦║ser涓姞鍏ョ鏈夋垚鍛楻oom錛屽湪HIBERNATE鐨勯厤緗枃浠朵腑濡備笅閰嶇疆錛?br />

<many-to-one name="room" 
             column
="room_id"
             class
="paul.com.Room"
             cascade
="all"
             outer-join
="true"/> 

  1. 鎸囧畾鍚嶇О涓簉oom鎴愬憳鐨勭被鍨嬶細many-to-one name="room"
  2. 鎸囧畾room瀵瑰簲鐨勭被鍚嶏細class="paul.com.Room"
  3. 鎸囧畾澶栭敭錛?span style="color: #ff0000">column="room_id"
  4. 鎸囧畾濡傛灉鍚屾椂鏂板銆佷慨鏀廣佸垹闄ゅ叧鑱旂殑Room鍜孶ser瀵硅薄鏃訛紝鏄惁闇瑕丠IBERNATE鎵ц涓ゆ鎿嶄綔錛?span style="color: #ff0000">cascade="all"
  5. 鎸囧畾鍏寵仈涓や釜琛ㄦ椂鐨勬煡璇㈡槸鍚︿嬌鐢╨eft-outer鍏抽敭瀛楋細outer-join="true"
User鍜孲erver鏄瀵瑰鐨勫叧緋伙紝濡傝鍦ㄥ彇寰桿ser瀵硅薄鐨勫悓鏃跺彇寰桽erver錛屽彲浠ser涓姞鍏et縐佹湁鎴愬憳錛屽湪HIBERNATE涓涓嬮厤緗細


<set name="servers" 
             table
="user_server" 
             cascade
="save-update"> 
 
            
<key column="user_id"/> 
            
<many-to-many class="paul.com.Server"
                          column
="server_id"/> 
</set>

  1. 鎸囧畾鍚嶇О涓簊ervers鐨勭鏈夋垚鍛樼殑綾誨瀷涓篠ET錛?span style="color: #800000">set name="servers"
  2. 鎸囧畾涓棿琛ㄤ負錛?span style="color: #ff0000">table="user_server"
  3. 鎸囧畾User琛ㄤ笌涓棿琛ㄥ叧鑱旂殑澶栭敭錛?span style="color: #800000">key column="user_id"
  4. 鎸囧畾闆嗗悎涓殑瀵硅薄綾誨瀷涓猴細many-to-many class="paul.com.Server"
  5. 鎸囧畾涓棿琛ㄤ笌Server鍏寵仈鐨勫閿細column="server_id"
  6. 鎸囧畾濡傛灉鍚屾椂鏂板銆佷慨鏀廣佸垹闄ゅ叧鑱旂殑Room鍜孶ser瀵硅薄鏃訛紝鏄惁闇瑕丠IBERNATE鎵ц涓ゆ鎿嶄綔錛?span style="color: #ff0000">cascade="save-update"

濡傛閰嶇疆鍚庯紝灝嗗ぇ閲忓噺灝慡QL璇彞鐨勬挵鍐欍?br />


paulwong 2009-05-01 11:57 鍙戣〃璇勮
]]>
鐢℉ibernate瀹炵幇棰嗗煙瀵硅薄鐨勮嚜瀹氫箟瀛楁http://m.tkk7.com/paulwong/archive/2008/01/23/177227.htmlpaulwongpaulwongWed, 23 Jan 2008 03:57:00 GMThttp://m.tkk7.com/paulwong/archive/2008/01/23/177227.htmlhttp://m.tkk7.com/paulwong/comments/177227.htmlhttp://m.tkk7.com/paulwong/archive/2008/01/23/177227.html#Feedback1http://m.tkk7.com/paulwong/comments/commentRss/177227.htmlhttp://m.tkk7.com/paulwong/services/trackbacks/177227.html闃呰鍏ㄦ枃

paulwong 2008-01-23 11:57 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 免费视频成人手机在线观看网址| 少妇性饥渴无码A区免费| 一进一出60分钟免费视频| 中文字幕在线视频免费观看| 久久国产乱子免费精品| 亚洲高清中文字幕免费| 四虎成人免费影院网址| 亚洲五月午夜免费在线视频| 亚洲成av人片天堂网| 亚洲av无码久久忘忧草| 曰批全过程免费视频免费看 | 永久免费bbbbbb视频| MM131亚洲国产美女久久| 亚洲美女大bbbbbbbbb| 亚洲变态另类一区二区三区| 精品乱子伦一区二区三区高清免费播放| 久久国产精品一区免费下载| 浮力影院第一页小视频国产在线观看免费 | 黄色网站软件app在线观看免费| 国产免费的野战视频| 国产精品美女自在线观看免费 | 亚洲男人的天堂在线播放| 亚洲精品GV天堂无码男同| 中文字幕av无码不卡免费| 美女裸身网站免费看免费网站| 免费在线观看的黄色网址| 久久青青草原亚洲av无码app| 朝桐光亚洲专区在线中文字幕| 国产免费一区二区视频| 免费无码一区二区三区蜜桃大| 国产亚洲综合一区柠檬导航| 亚洲国产欧洲综合997久久| 日韩电影免费在线观看网站| 在线免费观看一级毛片| 久久精品国产亚洲AV果冻传媒| 精品国产亚洲一区二区三区在线观看 | 色www免费视频| 在线观看www日本免费网站| 亚洲男人第一无码aⅴ网站| 亚洲宅男精品一区在线观看| 99精品视频在线观看免费|