鐢熸垚涓婚敭
銆銆Hibernate 鑳藉鍑鴻壊鍦拌嚜鍔ㄧ敓鎴愪富閿侶ibernate/EBJ 3 娉ㄩ噴涔熷彲浠ヤ負涓婚敭鐨勮嚜鍔ㄧ敓鎴愭彁渚涗赴瀵岀殑鏀寔錛屽厑璁稿疄鐜板悇縐嶇瓥鐣ャ備笅闈㈢殑紺轟緥璇存槑浜嗕竴縐嶅父鐢ㄧ殑鏂規硶錛屽叾涓?Hibernate 灝嗕細鏍規嵁搴曞眰鏁版嵁搴撴潵紜畾涓縐嶆伆褰撶殑閿敓鎴愮瓥鐣ワ細
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
瀹氬埗琛ㄥ拰瀛楁鏄犲皠
銆銆榛樿鎯呭喌涓嬶紝Hibernate 浼氬皢鎸佷箙綾諱互鍖歸厤鐨勫悕縐版槧灝勫埌琛ㄥ拰瀛楁涓備緥濡傦紝鍓嶄竴涓被鍙互涓庢槧灝勫埌浠ュ涓嬩唬鐮佸垱寤虹殑琛ㄤ腑錛?/font>
CREATE TABLE MODELPLANE
(
ID long,
NAME varchar
)
銆銆濡傛灉鎮ㄦ槸鑷繁鐢熸垚騫剁淮鎶ゆ暟鎹簱錛岄偅涔堣繖縐嶆柟娉曞緢鏈夋晥錛岄氳繃鐪佺暐浠g爜鍙互澶уぇ綆鍖栦唬鐮佺淮鎶ゃ傜劧鑰岋紝榪欏茍涓嶈兘婊¤凍鎵鏈変漢鐨勯渶姹傘傛湁浜涘簲鐢ㄧ▼搴忛渶瑕佽闂閮ㄦ暟鎹簱錛岃屽彟涓浜涘彲鑳介渶瑕侀伒浠庡叕鍙哥殑鏁版嵁搴撳懡鍚嶆儻渚嬨傚鏋滄湁蹇呰錛屾偍鍙互浣跨敤 @Table 鍜?@Column 娉ㄩ噴鏉ュ畾鍒舵偍鑷繁鐨勬寔涔呮ф槧灝勶紝濡備笅鎵紺猴細
@Entity
@Table(name="T_MODEL_PLANE")
public class ModelPlane {
private Long id;
private String name;
@Id
@Column(name="PLANE_ID")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name="PLANE_NAME")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
銆銆璇ュ唴瀹瑰皢鏄犲皠鍒頒笅琛ㄤ腑錛?br />
CREATE TABLE T_MODEL_PLANE
(
PLANE_ID long,
PLANE_NAME varchar
)
銆銆涔熷彲浠ヤ嬌鐢ㄥ叾浠栧浘鍜屽垪鐨勫睘鎬ф潵瀹氬埗鏄犲皠銆傝繖浣挎偍鍙互鎸囧畾璇稿鍒楅暱搴︺侀潪絀虹害鏉熺瓑璇︾粏鍐呭銆侶ibernate鏀寔澶ч噺閽堝榪欎簺娉ㄩ噴鐨勫睘鎬с備笅渚嬩腑灝卞寘鍚簡鍑犵灞炴э細
...
@Column(name="PLANE_ID", length=80, nullable=true)
public String getName() {
return name;
}
...
鏄犲皠鍏崇郴
銆銆Java 鎸佷箙鎬ф槧灝勮繃紼嬩腑鏈閲嶈鍜屾渶澶嶆潅鐨勪竴鐜氨鏄‘瀹氬浣曟槧灝勮〃闂寸殑鍏崇郴銆傚儚鍏朵粬浜у搧涓鏍鳳紝 Hibernate 鍦ㄨ棰嗗煙涓彁渚涗簡楂樺害鐨勭伒媧繪э紝浣嗗嵈鏄互澶嶆潅搴︾殑澧炲姞涓轟唬浠楓傛垜浠皢閫氳繃鐮旂┒鍑犱釜甯歌妗堜緥鏉ヤ簡瑙e浣曚嬌鐢ㄦ敞閲婃潵澶勭悊榪欎竴闂銆?br />
銆銆鍏朵腑涓縐嶆渶甯哥敤鐨勫叧緋誨氨鏄瀵逛竴鐨勫叧緋匯傚亣瀹氬湪浠ヤ笂紺轟緥涓瘡涓?ModelPlane 閫氳繃澶氬涓鐨勫叧緋伙紙涔熷氨鏄錛屾瘡涓鏈烘ā鍨嬪彧涓庝竴縐嶉鏈虹被鍨嬪緩绔嬭仈緋伙紝灝界鎸囧畾鐨勯鏈虹被鍨嬪彲浠ヤ笌涓冪椋炴満妯″瀷寤虹珛鑱旂郴錛夋潵涓?PlaneType 寤虹珛鑱旂郴銆傚彲濡備笅榪涜鏄犲皠錛?br />
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
public PlaneType getPlaneType() {
return planeType;
}
銆銆CascadeType 鍊艱〃鏄?Hibernate 搴斿浣曞鐞嗙駭鑱旀搷浣溿?br />
銆銆鍙︿竴縐嶅父鐢ㄧ殑鍏崇郴涓庝笂榪板叧緋葷浉鍙嶏細涓瀵瑰鍐嶅涓鍏崇郴錛屼篃縐頒負闆嗗悎銆傚湪鑰佸紡鐨?Hibernate 鐗堟湰涓繘琛屾槧灝勬垨浣跨敤娉ㄩ噴鏃訛紝闆嗗悎浠や漢澶寸柤錛岃繖閲屾垜浠皢綆瑕佸姞浠ユ帰璁紝浠ヤ嬌鎮ㄤ簡瑙e浣曞鐞嗛泦鍚堬紝渚嬪錛屽湪浠ヤ笂紺轟緥涓瘡涓?PlaneType 瀵硅薄閮藉彲鑳戒細鍖呭惈涓涓?ModelPlanes 闆嗗悎銆傚彲鏄犲皠濡備笅錛?br />
@OneToMany(mappedBy="planeType",
cascade=CascadeType.ALL,
fetch=FetchType.EAGER)
@OrderBy("name")
public List<ModelPlane> getModelPlanes() {
return modelPlanes;
}
鍛藉悕鏌ヨ
銆銆Hibernate 鏈浼樼鐨勫姛鑳戒箣涓灝卞湪浜庡畠鑳藉鍦ㄦ偍鐨勬槧灝勬枃浠朵腑澹版槑鍛藉悕鏌ヨ銆傞殢鍚庡嵆鍙氳繃浠g爜涓殑鍚嶇О璋冪敤姝ょ被鏌ヨ錛岃繖浣挎偍鍙互涓撴敞浜庢煡璇紝鑰岄伩鍏嶄簡 SQL 鎴栬?HQL 浠g爜鍒嗘暎浜庢暣涓簲鐢ㄧ▼搴忎腑鐨勬儏鍐點?br />
銆銆涔熷彲浠ヤ嬌鐢ㄦ敞閲婃潵瀹炵幇鍛藉悕鏌ヨ錛屽彲浠ヤ嬌鐢?@NamedQueries 鍜?@NamedQuery 娉ㄩ噴錛屽涓嬫墍紺猴細
@NamedQueries(
{
@NamedQuery(
name="planeType.findById",
query="select p from PlaneType p left join fetch p.modelPlanes where id=:id"
),
@NamedQuery(
name="planeType.findAll",
query="select p from PlaneType p"
),
@NamedQuery(
name="planeType.delete",
query="delete from PlaneType where id=:id"
)
}
)
銆銆涓鏃﹀畬鎴愪簡瀹氫箟錛屾偍灝卞彲浠ュ儚璋冪敤鍏朵粬浠諱綍鍏朵粬鍛藉悕鏌ヨ涓鏍鋒潵璋冪敤瀹冧滑銆?br />
緇撴潫璇?br />
銆銆Hibernate 3 娉ㄩ噴鎻愪緵浜嗗己澶ц岀簿鑷寸殑 API錛岀畝鍖栦簡 Java 鏁版嵁搴撲腑鐨勬寔涔呮т唬鐮侊紝鏈枃涓彧榪涜浜嗙畝鍗曠殑璁ㄨ銆傛偍鍙互閫夋嫨閬典粠鏍囧噯騫朵嬌鐢?Java 鎸佷箙鎬?API錛屼篃鍙互鍒╃敤鐗瑰畾浜?Hibernate鐨勬墿灞曪紝榪欎簺鍔熻兘浠ユ崯澶卞彲縐繪鎬т負浠d環鎻愪緵浜嗘洿涓哄己澶х殑鍔熻兘鍜屾洿楂樼殑鐏墊椿鎬с傛棤璁哄浣曪紝閫氳繃娑堥櫎瀵?XML 鏄犲皠鏂囦歡鐨勯渶姹傦紝Hibernate 娉ㄩ噴灝嗙畝鍖栧簲鐢ㄧ▼搴忕殑緇存姢錛屽悓鏃朵篃鍙互浣挎偍瀵笶JB 3 鏈夊垵姝ヨ璇嗐傛潵璇曡瘯鍚э紒