表与表关联 多对多

1...表与表之间的关系

一对一: A   B  两张表  A表中的每条的记录对应的B的一条记录

   :一对一关系实现方式:

         1:使用外键关联 

    :  场景:使用客户表和客户拓展表 

    :在属性上 添加一个@OneToOne代表一个对一个的关系    在属性上添加@JoinColumn​ name 存储外键的字段     referencedColumnNm 对方表的字段名称 (可以省略)

         2:使用主键关联,两个表  A  B 的主键相同。

   : 使用@PrimaryKeyJoinColumn 注解不需要配置属性   ​双方都需要添加

一对多: A   B  两张表  A表中的每条的记录对应B表中多条的记录    B表中多条的记录对应A表中一条记录

   :场景:客户和联系人之间 一对多       ​ 一个客户对应多个联系人

   :单方:1  添加一个属性 记录多的一方的信息  应该是一个集合 hashset    2  在属性上添加一个注解  @OneToMany      3一定是多的一方记录外键   参照一的一方的主键

   :多方:1  在属性上添加 注解   @ManyToOne   2   在属性上添加 @joinColumn 注解

多对多: A   B  两张表    A表中的每条的记录对应B表中多条的记录      B表中的每条记录对应A表中的多条记录

   :应用场景   用户和角色的关系  用户  角色  关系为例   CRM(客户关系管理)

  多对多使用注解@ManyToMany配置

    ​ a 在实体中添加一个集合属性

    ​ b 在属性上添加ManyToMany注解

    ​ c:@JoinTable 注解配置关联关系

​     name 中间表的名称

​     当前表和中间表的映射关系

​     对方表和中间映射表的关系

​     多对多关系中 只能一方维护关联关系 另一方放弃维护

  配置级联操作

    ​ @ManyToMnay注解中 配置cascade属性

    关联查询

        1 使用导航的方式查询 重难点

​     使用“对象.属性” 进行查询

    对于多的查询 默认就是延迟加载 添加注解@Transactional

​     在OneToMany 注解中需要添加属性 fetch

​     值:FetchType.LAZY   延迟加载

​     FetchType.EAGER   及时加载

​     通过联系人 查询客户

​     对一的查询默认是及时加载

​     也可以配置成延时加载

具体实现:简单案例:

1....pom.xml 与 applicationContext.xml 请看  表与表关联 一对多      表与表关联 一对一

2....实体类

User 类

 1 package com.wsc.core.entity;
 2 
 3 import javax.persistence.*;
 4 import java.io.Serializable;
 5 import java.util.HashSet;
 6 import java.util.Set;
 7 
 8 /**
 9  * @version 1.0
10  * @ClassName User
11  * @Description TODO
12  * @Author WSC
13  * @Date 2019/8/21 9:55
14  **/
15 @Entity
16 @Table(name="user")
17 public class User implements Serializable {  //实现序列化
18     @Id
19     @GeneratedValue(strategy = GenerationType.IDENTITY)
20     @Column(name="user_id")
21     private long userId;
22     @Column(name="username")
23     private String username;
24     @Column(name="password")
25     private String password;
26     //多对多关联关系    配置cascade属性
27     // FetchType.LAZY   延迟加载
28     // FetchType.EAGER   及时加载
29     @ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
30 //    注解配置关联关系
31 //    name 中间表的名称
32 //   joinColumns 当前表和中间表的映射关系
33 //   inverseJoinColumns 对方表和中间映射表的关系
34 
35     @
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值