第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

使用Annotation映射component的文件

http://img1.sycdn.imooc.com//58da581a000117b806380112.jpg

不知道怎么用注解來(lái)映射,求指教

正在回答

1 回答

1. 使用Hibernate Annotation來(lái)做對(duì)象關(guān)系映射
1) 添加必須包:
? ?hibernate-jpa-2.0-api-1.0.0.Final.jar
2) 在實(shí)體類中添加JPA的標(biāo)準(zhǔn)注解來(lái)進(jìn)行對(duì)象關(guān)系映射.注解可以添加在屬性上,也可以添加在getXxx()方法之上。
? ?a) @Entity 映射一個(gè)實(shí)體類
? ? ? @Table 指定關(guān)聯(lián)的表
? ?b) @Id 映射OID
? ?c) @GeneratedValue 指定OID的生成策略
? ?d) @Version 映射版本號(hào)屬性
? ?e) @Column 指定屬性對(duì)應(yīng)的列的信息
? ?f) @Temporal 指定日期時(shí)間的類型(TIMESTAMP,DATE,TIME)
? ?g) 簡(jiǎn)單屬性可以不用注解。默認(rèn)就是@Basic
? ?h) @Transient 指定屬性不需要映射
? ?i) 復(fù)雜屬性:關(guān)聯(lián),繼承,組件,聯(lián)合主鍵,集合
? ?
3) 在Hibernate全局配置文件中使用聲明映射類的方式:
? ?<mapping class="實(shí)體類的全限定名"/>
? ?
4) 使用Annotation來(lái)映射對(duì)象關(guān)系時(shí),加載Hibernate全局配置要使用AnnotationConfiguration類
5) 持久化操作與之前沒(méi)有區(qū)別。

2. Hibernate Annotation 基本映射
?
3. 映射多對(duì)一
?1) @ManyToOne
?2) 指定關(guān)聯(lián)列@JoinColumn(name="xxx_id")
?
4. 映射一對(duì)多
?1) @OneToMany ?默認(rèn)會(huì)使用連接表做一對(duì)多的關(guān)聯(lián)
?2) 添加@JoinColumn(name="xxx_id")后,就會(huì)使用外鍵關(guān)聯(lián),而不使用連接表了。

5. 映射雙向一對(duì)多
?1) 在多端:
? ? @ManyToOne
?2) 在一端:
? ? @OneToMany(mappedBy="多端的關(guān)聯(lián)屬性名"):----升級(jí)后--> ?@OneToMany
? ? @JoinColumn(name="外鍵名")
? ?
6. cascade屬性:指定級(jí)聯(lián)操作的行為(可多選)
? CascadeType.PERSIST :調(diào)用JPA規(guī)范中的persist(),不適用于Hibernate的save()方法
? CascadeType.MERGE:調(diào)用JPA規(guī)范中merge()時(shí),不適用于Hibernate的update()方法
? CascadeType.REMOVE:調(diào)用JPA規(guī)范中的remove()時(shí),適用于Hibernate的delete()方法
? CascadeType.REFRESH:調(diào)用JPA規(guī)范中的refresh()時(shí),適用于Hibernate的flush()方法
? CascadeType.ALL:JPA規(guī)范中的所有持久化方法。
?
7. mappedBy屬性:用在雙向關(guān)聯(lián)中,把關(guān)系的維護(hù)權(quán)反轉(zhuǎn)
? ? ? 跟hibernate XML映射中的property-ref一樣。
?
8. cascade屬性和mappedBy用在一起時(shí),一定要通過(guò)調(diào)用雙方的set方法來(lái)建立關(guān)系。

10. 雙向一對(duì)一
?1) 基于外鍵
? ?a) 在主控方:@OneToOne
? ?b) 在被控方:@OneToOne(mappedBy="對(duì)方的關(guān)聯(lián)屬性名")
? ?
?2) 基于主鍵: JPA標(biāo)準(zhǔn)中沒(méi)有提供共享主鍵生成問(wèn)題的標(biāo)準(zhǔn)方法,使用Hibernate的擴(kuò)展
? ?a) 在主控方:Car
? ? ? @Id
?@GeneratedValue(generator="my-uuid")
?@GenericGenerator(name="my-uuid", strategy="uuid")
?private String id;
?
?@OneToOne(cascade={CascadeType.ALL})
?@PrimaryKeyJoinColumn
?private Brand brand;
b) 在被控方:Brand
?@Id
?@GeneratedValue(generator="myFG")
?@GenericGenerator(name="myFG", strategy="foreign",parameters=@Parameter(name="property",value="car"))
?private String id;
?
?@OneToOne(mappedBy="brand")
?private Car car;

11. 雙向多對(duì)多
?1. 在主控方:
? ?//從學(xué)生到課程的多對(duì)多: 最好由某一端來(lái)維護(hù)這個(gè)關(guān)系會(huì)更有效率
@ManyToMany
@JoinTable(name="student_course",
joinColumns={@JoinColumn(name="student_id")},
inverseJoinColumns={@JoinColumn(name="course_id")})
private Set<Course> courseSet = new HashSet<Course>();
?2. 在被控方:
? ?//課程到學(xué)生的多對(duì)多
@ManyToMany(mappedBy="courseSet")
private Set<Student> stus = new HashSet<Student>();
12. 把雙向多對(duì)多拆成兩個(gè)一對(duì)多: 1-->*<--1

13. 繼承映射:
1. 整個(gè)繼承樹一張表
在父類中添加從下注解
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type",length=3)
@DiscriminatorValue("u")

子類中添加以下注解
@Entity
@DiscriminatorValue("w")

2. 每個(gè)子類一張表
在父類添加如下注解
@Entity
@Table(name="user")
@Inheritance(strategy=InheritanceType.JOINED)
在子類中跟普通實(shí)體類的映射相同

3. 每個(gè)具體類一張表
在父類中
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class User {
@Id
@GeneratedValue(strategy=GenerationType.TABLE,generator="xxGen")
@TableGenerator(name="xxGen",allocationSize=1)
private Long id;
...
}
在子類中跟普通實(shí)體類的映射相同

14. 組件映射
?在組件類中用@Emabbedable
在使用這個(gè)組件類中用
@Emabbed
@AttributeOverrides({
@AttributeOverride(name="email", column=@Column(name="p_email")),
@AttributeOverride(name="address", column=@Column(name="p_address")),
@AttributeOverride(name="mobile", column=@Column(name="p_mobile"))
})

15. 聯(lián)合主鍵映射
?1. 主鍵類:用@Emabbedable映射。并實(shí)現(xiàn)Serializable接口,使用主鍵屬性重寫hashCode()和equals()方法。
?2. 使用這個(gè)主鍵類的類中。用@Id映射。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉3535685 提問(wèn)者

非常感謝!
2017-04-11 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

使用Annotation映射component的文件

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)