hibernate通過註解實現實體和表的映射

來源:互聯網
上載者:User

標籤: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通過註解實現實體和表的映射

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.