hibernate -- 注解映射實體和表


表名的映射

//代表此類參與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>();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM