一對一關聯映射(註解)
@one-to-one可選屬性
name:映射類屬性的名字
class:映射的目標類
cascade:設置操作中的級聯策略 可選值爲 all所有操作情況均進行級聯、none所有操作情況均不進行級聯、save-update執行更新操作時級聯、delete執行刪除操作時級聯
constrained:表明當前類對應的表與被關聯的表之間是否存在着外鍵約束 默認值爲false
fetch:設置抓取數據的策略 可選值爲 join外連接抓取、select序列選擇抓取
property-ref:設置關聯類的屬性名,此屬性和本類的主鍵相對應 默認值爲關聯類的主鍵
access:Hibernate訪問這個屬性的策略 默認值爲property
formula:絕大多數一對一關聯都指向其實體的主鍵。在某些情況下會指向一個或多個字段或是一個表達式,此時可用一個SQL公式來表示
lazy:指定是否採用延遲加載及加載策略 默認值爲proxy通過代理進行關聯 可選值爲 true此對象採用延遲加載並在變量第一次被訪問時抓取、false此關聯對象不採用延遲加載
entity-name:被關聯類的實體名
基於主鍵的一對一關聯映射註解
public class Employee{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;
@OneToOne
@PrimaryKeyJoinColumn
private Address address;
. . .
}
public class Address{
@Id //不配置主鍵生成方式以便使用主表的主鍵生成
private Integer id;
private String address;
@OneToOne
@PrimaryKeyJoinColumn
private Employee employee;
. . .
}
基於外鍵的一對一關聯映射註解
@Entity
@Table(name=”t_employee”)
public class Employee{
private Integer id;
private String name;
@OneToOne(cascade={CascadeType.PERSIST,CascadeType.REFRESH})
private Address address;
. . .
}
public class Address{
private Integer id;
private String address;
@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(unique=true)
private Employee employee;
. . .
}