標籤:value 更新 user hiberna join nbsp etc log 外鍵
參考:
表名的映射:
//代表此類參與ORM映射,此註解必須要有@Entity //代表user這個類映射了一個表user50,如果表名和類名一樣,此註解可以省略@Table(name="user50")public class User {
主鍵的映射:
//主鍵,此註解必須要有 @Id //資料庫表中主鍵列名為id,如果實體類屬性名稱和列名相同,此註解可以省略 @Column(name="id") //主鍵的維護策略 @GenericGenerator(name="inc50",strategy="increment") @GeneratedValue(generator="inc50") private Integer userID;
屬性對應成表的欄位:
//@Column(name="name")//此屬性要映射到名為name的列上,若屬性名稱和列名相同,則註解可以省略 private String name;
日期類型的映射:
@Column(name="birth") //如果屬性是日期格式,可以設定日期的儲存規格 //time:只儲存時間 date:只儲存日期 timestamp:(預設)日期+時間 @Temporal(TemporalType.DATE) private Date birthday;
表之間的關係是一對一的映射:
Person實體中:
//關係屬性:告知Passport它的關係屬性 //mappedBy"對方中映射著外鍵的關係屬性==Passport表中有一個關係屬性,名字是person50" @OneToOne(mappedBy="person50") //ALL:增刪改都可以級聯(cascade) //save-update:增加和更新可以級聯 //delete:刪除可以級聯 //如果不設定,則增刪改都不可以級聯 //注意:查詢例外,不受級聯許可權的控制,預設級聯。 @Cascade(value=CascadeType.ALL) private Passport passport50;
Passport實體中:
//關係屬性 @OneToOne //JoinColumn:代表是從表,name的值代表:Passport表中外鍵名為person_id @JoinColumn(name="person_id") //@Cascade private Person person50;
表之間的關係是一對多的映射:
user表 1: n order表
user實體:
@OneToMany(mappedBy="user") //ALL:增刪改都可以級聯(cascade) //save-update:增加和更新可以級聯 //delete:刪除可以級聯 //如果不設定,則增刪改都不可以級聯 //注意:查詢例外,不受級聯許可權的控制,預設級聯。 @Cascade(value=CascadeType.DELETE) private Set<Order> orders=new HashSet<Order>();
order實體:
//關係屬性 @ManyToOne //JoinColumn:name代表關係屬性對應的列 @JoinColumn(name="user_id") private User user;
表之間的關係是多對多的映射:
Student n:n Course 關係表: r_c_s
Student實體:
//關係屬性
//EAGER: 查詢時關聯的資料也同時取出放入記憶體中,因為在記憶體裡,所以在session外也可以取 @ManyToMany(fetch=FetchType.EAGER) //中間表,兩個外鍵: joinColumns=指向自己的外鍵 inverseJoinColumns=指向對方的外鍵 @JoinTable(name="r_c_s" ,joinColumns={@JoinColumn(name="stu_id")} ,inverseJoinColumns={@JoinColumn(name="cour_id")}) @Cascade(value=CascadeType.ALL) private Set<Course> courses=new HashSet<Course>();
Course實體:
//關係屬性 @ManyToMany @JoinTable(name="r_c_s" ,joinColumns={@JoinColumn(name="cour_id")} ,inverseJoinColumns={@JoinColumn(name="stu_id")}) @Cascade(value=CascadeType.ALL) private Set<Student> students=new HashSet<Student>();
hibernate通過註解實現實體和表的映射