锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Table鐢ㄦ潵瀹氫箟entity涓昏〃鐨刵ame錛宑atalog錛宻chema絳夊睘鎬с?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· name: 琛ㄥ悕
· catalog: 瀵瑰簲鍏崇郴鏁版嵁搴撲腑鐨刢atalog
· schema錛氬搴斿叧緋繪暟鎹簱涓殑schema
· UniqueConstraints:瀹氫箟涓涓猆niqueConstraint鏁扮粍錛屾寚瀹氶渶瑕佸緩鍞竴綰︽潫鐨勫垪
@Entity
@Table(name="CUST")
public class Customer { ... }
銆銆
SecondaryTable
涓涓猠ntity class鍙互鏄犲皠鍒板琛紝SecondaryTable鐢ㄦ潵瀹氫箟鍗曚釜浠庤〃鐨勫悕瀛楋紝涓婚敭鍚嶅瓧絳夊睘鎬с?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· name: 琛ㄥ悕
· catalog: 瀵瑰簲鍏崇郴鏁版嵁搴撲腑鐨刢atalog
· schema錛氬搴斿叧緋繪暟鎹簱涓殑schema
· pkJoin: 瀹氫箟涓涓狿rimaryKeyJoinColumn鏁扮粍錛屾寚瀹氫粠琛ㄧ殑涓婚敭鍒?
· UniqueConstraints:瀹氫箟涓涓猆niqueConstraint鏁扮粍錛屾寚瀹氶渶瑕佸緩鍞竴綰︽潫鐨勫垪
涓嬮潰鐨勪唬鐮佽鏄嶤ustomer綾繪槧灝勫埌涓や釜琛紝涓昏〃鍚嶆槸CUSTOMER錛屼粠琛ㄥ悕鏄疌UST_DETAIL錛屼粠琛ㄧ殑涓婚敭鍒楀拰涓昏〃鐨勪富閿垪綾誨瀷鐩稿悓錛屽垪鍚嶄負(fù)CUST_ID銆?
@Entity
@Table(name="CUSTOMER")
@SecondaryTable(name="CUST_DETAIL",pkJoin=@PrimaryKeyJoinColumn(name="CUST_ID"))
public class Customer { ... }
SecondaryTables
褰撲竴涓猠ntity class鏄犲皠鍒頒竴涓富琛ㄥ拰澶氫釜浠庤〃鏃訛紝鐢⊿econdaryTables鏉ュ畾涔夊悇涓粠琛ㄧ殑灞炴с?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· value錛?瀹氫箟涓涓猄econdaryTable鏁扮粍錛屾寚瀹氭瘡涓粠琛ㄧ殑灞炴с?
@Table(name = "CUSTOMER")
@SecondaryTables( value = {
@SecondaryTable(name = "CUST_NAME", pkJoin = { @PrimaryKeyJoinColumn(name = "STMO_ID", referencedColumnName = "id") }),
@SecondaryTable(name = "CUST_ADDRESS", pkJoin = { @PrimaryKeyJoinColumn(name = "STMO_ID", referencedColumnName = "id") }) })
public class Customer {}
UniqueConstraint
UniqueConstraint瀹氫箟鍦═able鎴朣econdaryTable鍏冩暟鎹噷錛岀敤鏉ユ寚瀹氬緩琛ㄦ椂闇瑕佸緩鍞竴綰︽潫鐨勫垪銆?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· columnNames:瀹氫箟涓涓瓧絎︿覆鏁扮粍錛屾寚瀹氳寤哄敮涓綰︽潫鐨勫垪鍚嶃?
@Entity
@Table(name="EMPLOYEE",
uniqueConstraints={@UniqueConstraint(columnNames={"EMP_ID", "EMP_NAME"})}
)
public class Employee { ... }
Column
Column鍏冩暟鎹畾涔変簡鏄犲皠鍒版暟鎹簱鐨勫垪鐨勬墍鏈夊睘鎬э細(xì)鍒楀悕錛屾槸鍚﹀敮涓錛屾槸鍚﹀厑璁鎬負(fù)絀猴紝鏄惁鍏佽鏇存柊絳夈?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· name:鍒楀悕銆?
· unique: 鏄惁鍞竴
· nullable: 鏄惁鍏佽涓虹┖
· insertable: 鏄惁鍏佽鎻掑叆
· updatable: 鏄惁鍏佽鏇存柊
· columnDefinition: 瀹氫箟寤鴻〃鏃跺垱寤烘鍒楃殑DDL
· secondaryTable: 浠庤〃鍚嶃傚鏋滄鍒椾笉寤哄湪涓昏〃涓婏紙榛樿寤哄湪涓昏〃錛夛紝璇ュ睘鎬у畾涔夎鍒楁墍鍦ㄤ粠琛ㄧ殑鍚嶅瓧銆?
public class Person {
@Column(name = "PERSONNAME", unique = true, nullable = false, updatable = true)
private String name;
@Column(name = "PHOTO", columnDefinition = "BLOB NOT NULL", secondaryTable="PER_PHOTO")
private byte[] picture;
JoinColumn
濡傛灉鍦╡ntity class鐨刦ield涓婂畾涔変簡鍏崇郴錛坥ne2one鎴杘ne2many絳夛級錛屾垜浠氳繃JoinColumn鏉ュ畾涔夊叧緋葷殑灞炴с侸oinColumn鐨勫ぇ閮ㄥ垎灞炴у拰Column綾諱技銆?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· name:鍒楀悕銆?
· referencedColumnName:璇ュ垪鎸囧悜鍒楃殑鍒楀悕錛堝緩琛ㄦ椂璇ュ垪浣滀負(fù)澶栭敭鍒楁寚鍚戝叧緋誨彟涓绔殑鎸囧畾鍒楋級
· unique: 鏄惁鍞竴
· nullable: 鏄惁鍏佽涓虹┖
· insertable: 鏄惁鍏佽鎻掑叆
· updatable: 鏄惁鍏佽鏇存柊
· columnDefinition: 瀹氫箟寤鴻〃鏃跺垱寤烘鍒楃殑DDL
· secondaryTable: 浠庤〃鍚嶃傚鏋滄鍒椾笉寤哄湪涓昏〃涓婏紙榛樿寤哄湪涓昏〃錛夛紝璇ュ睘鎬у畾涔夎鍒楁墍鍦ㄤ粠琛ㄧ殑鍚嶅瓧銆?
涓嬮潰鐨勪唬鐮佽鏄嶤ustom鍜孫rder鏄竴瀵逛竴鍏崇郴銆傚湪Order瀵瑰簲鐨勬槧灝勮〃寤轟竴涓悕涓篊UST_ID鐨勫垪錛岃鍒椾綔涓哄閿寚鍚慍ustom瀵瑰簲琛ㄤ腑鍚嶄負(fù)ID鐨勫垪銆?
public class Custom {
@OneToOne
@JoinColumn(
name="CUST_ID", referencedColumnName="ID", unique=true, nullable=true, updatable=true)
public Order getOrder() {
return order;
}
JoinColumns
濡傛灉鍦╡ntity class鐨刦ield涓婂畾涔変簡鍏崇郴錛坥ne2one鎴杘ne2many絳夛級錛屽茍涓斿叧緋誨瓨鍦ㄥ涓狫oinColumn錛岀敤JoinColumns瀹氫箟澶氫釜JoinColumn鐨勫睘鎬с?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· value: 瀹氫箟JoinColumn鏁扮粍錛屾寚瀹氭瘡涓狫oinColumn鐨勫睘鎬с?
涓嬮潰鐨勪唬鐮佽鏄嶤ustom鍜孫rder鏄竴瀵逛竴鍏崇郴銆傚湪Order瀵瑰簲鐨勬槧灝勮〃寤轟袱鍒楋紝涓鍒楀悕涓篊UST_ID錛岃鍒椾綔涓哄閿寚鍚慍ustom瀵瑰簲琛ㄤ腑鍚嶄負(fù)ID鐨勫垪,鍙︿竴鍒楀悕涓篊UST_NAME錛岃鍒椾綔涓哄閿寚鍚慍ustom瀵瑰簲琛ㄤ腑鍚嶄負(fù)NAME鐨勫垪銆?
public class Custom {
@OneToOne
@JoinColumns({
@JoinColumn(name="CUST_ID", referencedColumnName="ID"),
@JoinColumn(name="CUST_NAME", referencedColumnName="NAME")
})
public Order getOrder() {
return order;
}
Id
澹版槑褰撳墠field涓烘槧灝勮〃涓殑涓婚敭鍒椼俰d鍊肩殑鑾峰彇鏂瑰紡鏈変簲縐嶏細(xì)TABLE, SEQUENCE, IDENTITY, AUTO, NONE銆侽racle鍜孌B2鏀寔SEQUENCE錛孲QL Server鍜孲ybase鏀寔IDENTITY,mysql鏀寔AUTO銆傛墍鏈夌殑鏁版嵁搴撻兘鍙互鎸囧畾涓篈UTO錛屾垜浠細(xì)鏍規(guī)嵁涓嶅悓鏁版嵁搴撳仛杞崲銆侼ONE (榛樿)闇瑕佺敤鎴瘋嚜宸辨寚瀹欼d鐨勫箋傚厓鏁版嵁灞炴ц鏄庯細(xì)
· generate():涓婚敭鍊肩殑鑾峰彇綾誨瀷
· generator():TableGenerator鐨勫悕瀛楋紙褰揼enerate=GeneratorType.TABLE鎵嶉渶瑕佹寚瀹氳灞炴э級
涓嬮潰鐨勪唬鐮佸0鏄嶵ask鐨勪富閿垪id鏄嚜鍔ㄥ闀跨殑銆?Oracle鍜孌B2浠庨粯璁ょ殑SEQUENCE鍙栧鹼紝SQL Server鍜孲ybase璇ュ垪寤烘垚IDENTITY錛宮ysql璇ュ垪寤烘垚auto increment銆?
@Entity
@Table(name = "OTASK")
public class Task {
@Id(generate = GeneratorType.AUTO)
public Integer getId() {
return id;
}
}
IdClass
褰揺ntity class浣跨敤澶嶅悎涓婚敭鏃訛紝闇瑕佸畾涔変竴涓被浣滀負(fù)id class銆俰d class蹇呴』絎﹀悎浠ヤ笅瑕佹眰:綾誨繀欏誨0鏄庝負(fù)public錛屽茍鎻愪緵涓涓0鏄庝負(fù)public鐨勭┖鏋勯犲嚱鏁般傚繀欏誨疄鐜癝erializable鎺ワ紝瑕嗗啓 equals()鍜宧ashCode錛堬級鏂規(guī)硶銆俥ntity class鐨勬墍鏈塱d field鍦╥d class閮借瀹氫箟錛屼笖綾誨瀷涓鏍楓?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· value: id class鐨勭被鍚?
public class EmployeePK implements Java.io.Serializable{
String empName;
Integer empAge;
public EmployeePK(){}
public boolean equals(Object obj){ ......}
public int hashCode(){......}
}
@IdClass(value=com.acme.EmployeePK.class)
@Entity(access=FIELD)
public class Employee {
@Id String empName;
@Id Integer empAge;
}
MapKey
鍦ㄤ竴瀵瑰錛屽瀵瑰鍏崇郴涓紝鎴戜滑鍙互鐢∕ap鏉ヤ繚瀛橀泦鍚堝璞°傞粯璁ょ敤涓婚敭鍊煎仛key錛屽鏋滀嬌鐢ㄥ鍚堜富閿紝鍒欑敤id class鐨勫疄渚嬪仛key錛屽鏋滄寚瀹氫簡name灞炴э紝灝辯敤鎸囧畾鐨刦ield鐨勫煎仛key銆?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· name: 鐢ㄦ潵鍋歬ey鐨刦ield鍚嶅瓧
涓嬮潰鐨勪唬鐮佽鏄嶱erson鍜孊ook涔嬮棿鏄竴瀵瑰鍏崇郴銆侾erson鐨刡ooks瀛楁鏄疢ap綾誨瀷錛岀敤Book鐨刬sbn瀛楁鐨勫間綔涓篗ap鐨刱ey銆?
@Table(name = "PERSON")
public class Person {
@OneToMany(targetEntity = Book.class, cascade = CascadeType.ALL, mappedBy = "person")
@MapKey(name = "isbn")
private Map books = new HashMap();
}
OrderBy
鍦ㄤ竴瀵瑰錛屽瀵瑰鍏崇郴涓紝鏈夋椂鎴戜滑甯屾湜浠庢暟鎹簱鍔犺澆鍑烘潵鐨勯泦鍚堝璞℃槸鎸変竴瀹氭柟寮忔帓搴忕殑錛岃繖鍙互閫氳繃OrderBy鏉ュ疄鐜幫紝榛樿鏄寜瀵硅薄鐨勪富閿崌搴忔帓鍒椼?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· value: 瀛楃涓茬被鍨嬶紝鎸囧畾鎺掑簭鏂瑰紡銆傛牸寮忎負(fù)"fieldName1 [ASC|DESC],fieldName2 [ASC|DESC],......",鎺掑簭綾誨瀷鍙互涓嶆寚瀹氾紝榛樿鏄疉SC銆?
涓嬮潰鐨勪唬鐮佽鏄嶱erson鍜孊ook涔嬮棿鏄竴瀵瑰鍏崇郴銆傞泦鍚坆ooks鎸夌収Book鐨刬sbn鍗囧簭錛宯ame闄嶅簭鎺掑垪銆?
@Table(name = "MAPKEY_PERSON")
public class Person {
@OneToMany(targetEntity = Book.class, cascade = CascadeType.ALL, mappedBy = "person")
@OrderBy(name = "isbn ASC, name DESC")
private List books = new ArrayList();
}
PrimaryKeyJoinColumn
鍦ㄤ笁縐嶆儏鍐典笅浼?xì)鐢ㄥ埌PrimaryKeyJoinColumn銆?
· 緇ф壙銆?
· entity class鏄犲皠鍒頒竴涓垨澶氫釜浠庤〃銆備粠琛ㄦ牴鎹富琛ㄧ殑涓婚敭鍒楋紙鍒楀悕涓簉eferencedColumnName鍊肩殑鍒楋級錛屽緩绔嬩竴涓被鍨嬩竴鏍風(fēng)殑涓婚敭鍒楋紝鍒楀悕鐢眓ame灞炴у畾涔夈?
· one2one鍏崇郴錛屽叧緋葷淮鎶ょ鐨勪富閿綔涓哄閿寚鍚戝叧緋昏緇存姢绔殑涓婚敭錛屼笉鍐嶆柊寤轟竴涓閿垪銆?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· name:鍒楀悕銆?
· referencedColumnName:璇ュ垪寮曠敤鍒楃殑鍒楀悕
· columnDefinition: 瀹氫箟寤鴻〃鏃跺垱寤烘鍒楃殑DDL
涓嬮潰鐨勪唬鐮佽鏄嶤ustomer鏄犲皠鍒頒袱涓〃錛屼富琛–USTOMER,浠庤〃CUST_DETAIL錛屼粠琛ㄩ渶瑕佸緩绔嬩富閿垪CUST_ID錛岃鍒楀拰涓昏〃鐨勪富閿垪id闄や簡鍒楀悕涓嶅悓錛屽叾浠栧畾涔変竴鏍楓?
@Entity
@Table(name="CUSTOMER")
@SecondaryTable(name="CUST_DETAIL",pkJoin=@PrimaryKeyJoinColumn(name="CUST_ID"錛宺eferencedColumnName="id"))
public class Customer {
@Id(generate = GeneratorType.AUTO)
public Integer getId() {
return id;
}
}
涓嬮潰鐨勪唬鐮佽鏄嶦mployee鍜孍mployeeInfo鏄竴瀵逛竴鍏崇郴錛孍mployee鐨勪富閿垪id浣滀負(fù)澶栭敭鎸囧悜EmployeeInfo鐨勪富閿垪INFO_ID銆?
@Table(name = "Employee")
public class Employee {
@OneToOne
@PrimaryKeyJoinColumn(name = "id", referencedColumnName="INFO_ID")
EmployeeInfo info;
}
PrimaryKeyJoinColumns
濡傛灉entity class浣跨敤浜嗗鍚堜富閿紝鎸囧畾鍗曚釜PrimaryKeyJoinColumn涓嶈兘婊¤凍瑕佹眰鏃訛紝鍙互鐢≒rimaryKeyJoinColumns鏉ュ畾涔夊涓狿rimaryKeyJoinColumn銆?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· value: 涓涓狿rimaryKeyJoinColumn鏁扮粍錛屽寘鍚墍鏈塒rimaryKeyJoinColumn銆?
涓嬮潰鐨勪唬鐮佽鏄庝簡Employee鍜孍mployeeInfo鏄竴瀵逛竴鍏崇郴銆備粬浠兘浣跨敤澶嶅悎涓婚敭錛屽緩琛ㄦ椂闇瑕佸湪Employee琛ㄥ緩绔嬩竴涓閿紝浠嶦mployee鐨勪富閿垪id,name鎸囧悜EmployeeInfo鐨勪富閿垪INFO_ID鍜孖NFO_NAME.
@Entity
@IdClass(EmpPK.class)
@Table(name = "EMPLOYEE")
public class Employee {
private int id;
private String name;
private String address;
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumns({
@PrimaryKeyJoinColumn(name="id", referencedColumnName="INFO_ID"),
@PrimaryKeyJoinColumn(name="name" , referencedColumnName="INFO_NAME")})
EmployeeInfo info;
}
@Entity
@IdClass(EmpPK.class)
@Table(name = "EMPLOYEE_INFO")
public class EmployeeInfo {
@Id
@Column(name = "INFO_ID")
private int id;
@Id
@Column(name = "INFO_NAME")
private String name;
}
Transient
Transient鐢ㄦ潵娉ㄩ噴entity鐨勫睘鎬э紝鎸囧畾鐨勮繖浜涘睘鎬т笉浼?xì)琚寔涔呭寲锛屼篃涓嶄細(xì)湄?fù)榪欎簺灞炴у緩琛ㄣ?
@Transient
private String name;
Version
Version鎸囧畾瀹炰綋綾誨湪涔愯浜嬪姟涓殑version灞炴с傚湪瀹炰綋綾婚噸鏂扮敱EntityManager綆$悊騫朵笖鍔犲叆鍒頒箰瑙備簨鍔′腑鏃訛紝淇濊瘉瀹屾暣鎬с傛瘡涓涓被鍙兘鏈変竴涓睘鎬ц鎸囧畾涓簐ersion錛寁ersion灞炴у簲璇ユ槧灝勫埌瀹炰綋綾葷殑涓昏〃涓娿?
涓嬮潰鐨勪唬鐮佽鏄巚ersionNum灞炴т綔涓鴻繖涓被鐨剉ersion錛屾槧灝勫埌鏁版嵁搴撲腑涓昏〃鐨勫垪鍚嶆槸OPTLOCK銆?
@Version
@Column("OPTLOCK")
protected int getVersionNum() { return versionNum; }
Lob
Lob鎸囧畾涓涓睘鎬т綔涓烘暟鎹簱鏀寔鐨勫ぇ瀵硅薄綾誨瀷鍦ㄦ暟鎹簱涓瓨鍌ㄣ備嬌鐢↙obType榪欎釜鏋氫婦鏉ュ畾涔塋ob鏄簩榪涘埗綾誨瀷榪樻槸瀛楃綾誨瀷銆?
LobType鏋氫婦綾誨瀷璇存槑錛?
· BLOB 浜岃繘鍒跺ぇ瀵硅薄錛孊yte[]鎴栬匰erializable鐨勭被鍨嬪彲浠ユ寚瀹氫負(fù)BLOB銆?
· CLOB 瀛楃鍨嬪ぇ瀵硅薄錛宑har[]銆丆haracter[]鎴朣tring綾誨瀷鍙互鎸囧畾涓篊LOB銆?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· fetch錛?瀹氫箟榪欎釜瀛楁鏄痩azy loaded榪樻槸eagerly fetched銆傛暟鎹被鍨嬫槸FetchType鏋氫婦錛岄粯璁や負(fù)LAZY,鍗砽azy loaded.
· type錛?瀹氫箟榪欎釜瀛楁鍦ㄦ暟鎹簱涓殑JDBC鏁版嵁綾誨瀷銆傛暟鎹被鍨嬫槸LobType鏋氫婦錛岄粯璁や負(fù)BLOB銆?
涓嬮潰鐨勪唬鐮佸畾涔変簡涓涓狟LOB綾誨瀷鐨勫睘鎬у拰涓涓狢LOB綾誨瀷鐨勫睘鎬с?
@Lob
@Column(name="PHOTO" columnDefinition="BLOB NOT NULL")
protected JPEGImage picture;
@Lob(fetch=EAGER, type=CLOB)
@Column(name="REPORT")
protected String report;
JoinTable
JoinTable鍦╩any-to-many鍏崇郴鐨勬墍鏈夎呬竴杈瑰畾涔夈傚鏋滄病鏈夊畾涔塉oinTable錛屼嬌鐢↗oinTable鐨勯粯璁ゅ箋?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· table:榪欎釜join table鐨凾able瀹氫箟銆?
· joinColumns:瀹氫箟鎸囧悜鎵鏈夎呬富琛ㄧ殑澶栭敭鍒楋紝鏁版嵁綾誨瀷鏄疛oinColumn鏁扮粍銆?
· inverseJoinColumns:瀹氫箟鎸囧悜闈炴墍鏈夎呬富琛ㄧ殑澶栭敭鍒楋紝鏁版嵁綾誨瀷鏄疛oinColumn鏁扮粍銆?
涓嬮潰鐨勪唬鐮佸畾涔変簡涓涓繛鎺ヨ〃CUST鍜孭HONE鐨刯oin table銆俲oin table鐨勮〃鍚嶆槸CUST_PHONE錛屽寘鍚袱涓閿紝涓涓閿槸CUST_ID錛屾寚鍚戣〃CUST鐨勪富閿甀D錛屽彟涓涓閿槸PHONE_ID錛屾寚鍚戣〃PHONE鐨勪富閿甀D銆?
@JoinTable(
table=@Table(name=CUST_PHONE),
joinColumns=@JoinColumn(name="CUST_ID", referencedColumnName="ID"),
inverseJoinColumns=@JoinColumn(name="PHONE_ID", referencedColumnName="ID")
)
TableGenerator
TableGenerator瀹氫箟涓涓富閿肩敓鎴愬櫒錛屽湪Id榪欎釜鍏冩暟鎹殑generate錛漈ABLE鏃訛紝generator灞炴т腑鍙互浣跨敤鐢熸垚鍣ㄧ殑鍚嶅瓧銆傜敓鎴愬櫒鍙互鍦ㄧ被銆佹柟娉曟垨鑰呭睘鎬т笂瀹氫箟銆?
鐢熸垚鍣ㄦ槸涓哄涓疄浣撶被鎻愪緵榪炵畫鐨処D鍊肩殑琛紝姣忎竴琛屼負(fù)涓涓被鎻愪緵ID鍊鹼紝ID鍊奸氬父鏄暣鏁般?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· name:鐢熸垚鍣ㄧ殑鍞竴鍚嶅瓧錛屽彲浠ヨI(xiàn)d鍏冩暟鎹嬌鐢ㄣ?
· table:鐢熸垚鍣ㄧ敤鏉ュ瓨鍌╥d鍊肩殑Table瀹氫箟銆?
· pkColumnName:鐢熸垚鍣ㄨ〃鐨勪富閿悕縐般?
· valueColumnName:鐢熸垚鍣ㄨ〃鐨処D鍊肩殑鍒楀悕縐般?
· pkColumnValue:鐢熸垚鍣ㄨ〃涓殑涓琛屾暟鎹殑涓婚敭鍊箋?
· initialValue:id鍊肩殑鍒濆鍊箋?
· allocationSize:id鍊肩殑澧為噺銆?
涓嬮潰鐨勪唬鐮佸畾涔変簡涓や釜鐢熸垚鍣╡mpGen鍜宎ddressGen錛岀敓鎴愬櫒鐨勮〃鏄疘D_GEN銆?
@Entity public class Employee {
...
@TableGenerator(name="empGen",
table=@Table(name="ID_GEN"),
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="EMP_ID",
allocationSize=1)
@Id(generate=TABLE, generator="empGen")
public int id;
...
}
@Entity public class Address {
...
@TableGenerator(name="addressGen",
table=@Table(name="ID_GEN"),
pkColumnValue="ADDR_ID")
@Id(generate=TABLE, generator="addressGen")
public int id;
...
}
SequenceGenerator
SequenceGenerator瀹氫箟涓涓富閿肩敓鎴愬櫒錛屽湪Id榪欎釜鍏冩暟鎹殑generator灞炴т腑鍙互浣跨敤鐢熸垚鍣ㄧ殑鍚嶅瓧銆傜敓鎴愬櫒鍙互鍦ㄧ被銆佹柟娉曟垨鑰呭睘鎬т笂瀹氫箟銆傜敓鎴愬櫒鏄暟鎹簱鏀寔鐨剆equence瀵硅薄銆?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· name:鐢熸垚鍣ㄧ殑鍞竴鍚嶅瓧錛屽彲浠ヨI(xiàn)d鍏冩暟鎹嬌鐢ㄣ?
· sequenceName:鏁版嵁搴撲腑錛宻equence瀵硅薄鐨勫悕縐般傚鏋滀笉鎸囧畾錛屼細(xì)浣跨敤鎻愪緵鍟嗘寚瀹氱殑榛樿鍚嶇О銆?
· initialValue:id鍊肩殑鍒濆鍊箋?
· allocationSize:id鍊肩殑澧為噺銆?
涓嬮潰鐨勪唬鐮佸畾涔変簡涓涓嬌鐢ㄦ彁渚涘晢榛樿鍚嶇О鐨剆equence鐢熸垚鍣ㄣ?
@SequenceGenerator(name="EMP_SEQ", allocationSize=25)
DiscriminatorColumn
DiscriminatorColumn瀹氫箟鍦ㄤ嬌鐢⊿INGLE_TABLE鎴朖OINED緇ф壙絳栫暐鐨勮〃涓尯鍒笉緇ф壙灞傛鐨勫垪銆?
鍏冩暟鎹睘鎬ц鏄庯細(xì)
· name:column鐨勫悕瀛椼傞粯璁ゅ間負(fù)TYPE銆?
· columnDefinition:鐢熸垚DDL鐨剆ql鐗囨柇銆?
· length:String綾誨瀷鐨刢olumn鐨勯暱搴︼紝鍏朵粬綾誨瀷浣跨敤榛樿鍊?0銆?
涓嬮潰鐨勪唬鐮佸畾涔変簡涓涓垪鍚嶄負(fù)DISC錛岄暱搴︿負(fù)20鐨凷tring綾誨瀷鐨勫尯鍒垪銆?
@Entity
@Table(name="CUST")
@Inheritance(strategy=SINGLE_TABLE,
discriminatorType=STRING,
discriminatorValue="CUSTOMER")
@DiscriminatorColumn(name="DISC", length=20)
public class Customer { ... }
鍏堜笅杞絁Boss4.0.3RC2鐗堟湰錛屼粬浠宸茬粡鍖呭惈浜咵JB3.0鐨勫鍣紝鍙槸鎴戞病鐪嬪埌銆備篃緗?鎴戜滑灝卞厛閰嶇疆涓涓嬨?/p>
濡傛灉鍦ㄨ繖涔嬪墠鐗堟湰錛岃偗瀹氭槸瑕侀厤緗殑錛?/p>
1銆侀鍏堣淇濊瘉浣犲凡緇忎笅杞戒簡jboss鍜宔jb3.0錛屽厛瑁卝boss錛岃繖涓笉鐢ㄦ暀鍚э紵
2銆佽В鍘嬬緝ejb鍖咃紝鐒跺悗鍧愪竴涓嬪姩浣滐細(xì)
浠巈jb鐨刲ib/鐩綍涓嬫妸ejb3.deployer 銆乪jb3-clustered-sfsbcache-service.xml 銆乪jb3-entity-cache-service.xml 銆乪jb3-entity-cache-service.xml 銆乪jb3-interceptors-aop.xml 銆乯boss-aop-jdk50.deployer 澶嶅埗鍒癹boss-4.0.x/server/all/deploy 鐩綍涓嬶紱
鎶妀boss-xb.jar 澶嶅埗鍒癹boss-4.0.x/server/all/lib 鐩綍涓嬶紱
鎶妀boss-aop.deployer/鐩綍浠巎boss-4.0.x/server/all/deploy 涓垹闄ゃ?/p>
3銆佸惎鍔╦boss錛歳un -c all
4銆佹墦寮ejb3.0鐨勭洰褰曚腑docs/tutorials鐩綍錛岄噷闈㈡湁mdb鐩綍錛屾墦寮錛屾湁build.xml鏂囦歡錛屽搱鍝堬紝灝辨槸榪欎釜鍦版柟錛?/p>
瑁呬簡ANT浜嗗悧錛熸病鏈夛紝閭d綘涓嬩竴涓惂錛佺劧鍚庯紝璁劇疆path錛岃緋葷粺鑳藉鎵懼埌浠栵紒
鐒跺悗錛屽湪mdb鐩綍涓嬭繍琛孉NT錛屽鏋滄病闂錛岄偅璇存槑浣犵殑鐜鍙橀噺娌¢棶棰樸?/p>
涓嬩竴姝ワ紝鍒ョ潃騫插埆鐨勶紝鍏堣繍琛宩boss錛屾帴鐫鍐嶈繍琛孉NT run銆?/p>
娌¢棶棰樺惂