首页:在数据库中通过外键来表示引用关系,在持久化API中外键称为连接字段(JoinColumn).
OneToOne 双向映射关系建立
例如:一个用户(User.Class)拥有一个堆联系方式(Contact.Class),设计为带有级联关系.
public class User ....
@Id @@GeneratedValue
private Long user_id;
private String name;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "contact_id")
private Contact ct;
建立User类对Contact类的一对一映射关系,
在数据库user表中创建contact_id字段并设为外键关联contact表中的主键contact_id
如果不设置@JoinColumn中的name值,则默认创建字段'类名+属性名+ID',如contact_ct_id
设置针对全部操作级联属性,如删除用户,同时也会删除此用户的联系信息
public class Contact ....
@Id @@GeneratedValue
private Long contact_id;
private String email;
@@OneToOne(mappedBy = "ct")
private Set<User> user;
通过mappedBy元素表示关系的持有者(维护端)是User类,而非持有端(被维护端)是Contact类
关系的持有者(维护端)拥有连接字端(数据库中有外键)
这两行代码可以解释为由User类中的ct属性来完成Contact类对User类的关系映射
只表示了关系的映射,在数据中不会有任何操作
OneToMany ManyToOne 双向映射关系建立
例如:多个学生(Student)只有一个班主任(Master),设计为不带级联(删除一个学生,班主任仍然存在)
public class Student ....
@Id @@GeneratedValue
private Long student _id;
private String name;
@ManyToOne
@JoinColumn(name = "master_id")
private Master mt;
完成Student类对Master类的关系映射,在数据库student表中创建master_id字段与外键
public class Master ....
@Id @@GeneratedValue
private Long master _id;
private String master_name;
@OneToMany(mappedBy = "mt")
private Set<Student> st;
在Master类中,由Student类中的mt属性完成Master类对Student类的关系映射
OneToOne 双向映射关系建立
例如:一个用户(User.Class)拥有一个堆联系方式(Contact.Class),设计为带有级联关系.
public class User ....
@Id @@GeneratedValue
private Long user_id;
private String name;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "contact_id")
private Contact ct;
建立User类对Contact类的一对一映射关系,
在数据库user表中创建contact_id字段并设为外键关联contact表中的主键contact_id
如果不设置@JoinColumn中的name值,则默认创建字段'类名+属性名+ID',如contact_ct_id
设置针对全部操作级联属性,如删除用户,同时也会删除此用户的联系信息
public class Contact ....
@Id @@GeneratedValue
private Long contact_id;
private String email;
@@OneToOne(mappedBy = "ct")
private Set<User> user;
通过mappedBy元素表示关系的持有者(维护端)是User类,而非持有端(被维护端)是Contact类
关系的持有者(维护端)拥有连接字端(数据库中有外键)
这两行代码可以解释为由User类中的ct属性来完成Contact类对User类的关系映射
只表示了关系的映射,在数据中不会有任何操作
OneToMany ManyToOne 双向映射关系建立
例如:多个学生(Student)只有一个班主任(Master),设计为不带级联(删除一个学生,班主任仍然存在)
public class Student ....
@Id @@GeneratedValue
private Long student _id;
private String name;
@ManyToOne
@JoinColumn(name = "master_id")
private Master mt;
完成Student类对Master类的关系映射,在数据库student表中创建master_id字段与外键
public class Master ....
@Id @@GeneratedValue
private Long master _id;
private String master_name;
@OneToMany(mappedBy = "mt")
private Set<Student> st;
在Master类中,由Student类中的mt属性完成Master类对Student类的关系映射