文章目录
1. 回顾多表关系
数据库表中有一对多、多对多的关系。一对多关系中一的一方作为主表需要使用外键、多对多关系中需要借助中间表,中间表中至少由两个字段组成 ,这两个字段做为外键指向两张表的主键,又组成了联合主键。
实体类中的关系
包含关系:可以通过实体类中的包含关系描述表关系
继承关系
分析步骤
1.明确表关系
2.确定表关系(描述 外键|中间表)
3.编写实体类,再实体类中描述表关系(包含关系)
4.配置映射关系
分析步骤
1.明确表关系
一对多关系
2.确定表关系(描述 外键|中间表)
主表:客户表
从表:联系人表
再从表上添加外键
3.编写实体类,再实体类中描述表关系(包含关系)
客户:再客户的实体类中包含一个联系人的集合
联系人:在联系人的实体类中包含一个客户的对象
4.配置映射关系
* 使用jpa注解配置一对多映射关系
2. 一对多关系
2.1 主表 Customer
在主表Customer的成员属性中添加 LinkMan
targetEntity = LinkMan.class
配置目标实体类
name :外键名称
referencedColumnName :主表中的参照字段
@OneToMany(targetEntity = LinkMan.class)
@JoinColumn(name = "lkm_cust_id",referencedColumnName = "cust_id")
private Set<LinkMan> linkmans = new HashSet<LinkMan>();
/**
* * 所有的注解都是使用JPA的规范提供的注解,
* * 所以在导入注解包的时候,一定要导入javax.persistence下的
*/
@Entity //声明实体类
@Table(name="cst_customer") //建立实体类和表的映射关系
public class Customer {
@Id//声明当前私有属性为主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //配置主键的生成策略
@Column(name = "cust_id") //指定和表中cust_id字段的映射关系
private Long custId;
@Column(name = "cust_name") //指定和表中cust_name字段的映射关系
private String custName;
@Column(name = "cust_source")//指定和表中cust_source字段的映射关系
private String custSource;
@Column(name = "cust_industry")//指定和表中cust_industry字段的映射关系
private String custIndustry;
@Column(name = "cust_level")//指定和表中cust_level字段的映射关系
private String custLevel;
@Column(name = "cust_address")//指定和表中cust_address字段的映射关系
private String custAddress;
@Column(name = "cust_phone")//指定和表中cust_phone字段的映射关系
private String custPhone;
/**
* 配置客户到联系人
* 一对多关系
*/
@OneToMany(targetEntity = LinkMan.class)
@JoinColumn(name = "lkm_cust_id",referencedColumnName = "cust_id")
private Set<LinkMan> linkmans = new HashSet<LinkMan>();
2.2 从表 LinkMan
* 配置联系人到客户
* 多对一关系
* 1.配置表关系
* @ManyToOne:配置多对一关系 targetEntity:对方的实体类字节码
* 2.配置外键
* 配置外键的过程,配置到了多的一方,就会在多的一方维护外键
*
@ManyToOne(targetEntity = Customer.class)
@JoinColumn(name = &