谈 Hibernate Annotation @mappedBy含义

“一对多/多对一”是数据库表关系中最常见的一种关系。两张表通过外键进行关联,实现表达“一对多/多对一”关系。外键通常位于”多方”表中。

用学生选课的例子 来说一下自己对这个注释@mappedBy的理解。

关系:

学生Student 多方--------课程Course 多方

学生 Student多方--------老师 Teacher一方

mappedBy 指向的是放弃维护关系的一方。 学生与课程,即课程类放弃维护关系,外键在Student类中。学生与老师,即老师Teacher放弃维护关系,外键在学生Student类中。

@Entity
@Table(name="t_student")
public class Student {
    @Id
    @GeneratedValue
    private Integer id; //主键Id
    private String uname; //学生名字
    private String pwd;// 密码
    private String phone;//手机号码 
    private String email;//邮箱
    
    /*
     * 外键通常放在 多方表中,放在学生表中.course放弃维护
     */
    @ManyToMany
    private Set<Course> courses = new HashSet<Course>();
    
    @ManyToOne
    private Teacher teacher;
@Entity
@Table(name="t_course")
public class Course {
    @Id
    @GeneratedValue
    private Integer id; 
    private String courseDesc;//课程描述
    private String courseNo;//课程代号
    
    //Course放弃 维护外键。
    @ManyToMany(mappedBy="courses")
    private Set<Student>students= new HashSet<Student>();
@Entity
@Table(name="t_teacher")
public class Teacher {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;//姓名
    private String pwd;//密码
    private String phone;//手机
    
    
    /*
     * 外键一般放在 多方表中.
     * mappedBy  指向的是  放弃  维护  关系的类.即,Teacher 类 放弃 维护关系 ,外键 放在Student类中,让学生来维护 。
     */
    @OneToMany(mappedBy="teacher")
    private Set<Student>students = new HashSet<Student>();

 数据库表单

course类表单

学生类表单

学生 -老师关系表

转载于:https://www.cnblogs.com/shuanlei/p/4238453.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值