谈 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类表单

学生类表单

学生 -老师关系表

时间: 2024-08-25 07:35:56

谈 Hibernate Annotation @mappedBy含义的相关文章

Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解

1.一对一 (One to One)    共三种情况:     1.1 主键共享    1.2 外键共享 1.3 中间表关联 1.1  code: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @Entity public class article {     @Id     @GeneratedValue    public Integer getArticleId() {         return articleId;     }     .....  

Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解

在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基本配置.核心API的底层实现和源码解析将在以后的博客中一一为大家讲解. 首先我们一起来看一下开发一个hibernate应用程序的大体流程是什么样的(流程顺序可以颠倒): •创建Hibernate的配置文件 •创建持久化类 •创建对象-关系映射文件 •通过Hibernate API编写访问数据库的代码 关于配置

Hibernate Annotation 学习

1.一对多关联,级联操作 @OneToMany(mappedBy = "paymentad", cascade = CascadeType.ALL, fetch = FetchType.LAZY, targetEntity = PaymentAdHistory.class)public List<PaymentAdHistory> getPaymentHis() {    return paymentHis;} PaymentAdHistory类中 @ManyToOne(c

hibernate annotation注解方式来处理映射关系

在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hibernate4以后已经将annotation的jar包集成进来了,如果使用hibernate3的版本就需要引入annotation的jar包. 一.单对象操作 @Entity

Hibernate Annotation笔记

(1)简介:在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准.它非常强大.灵活,而且具备了优异的性能.在本文中,我们将了解如何使用Java 5 注释来简化Hibernate代码,并使持久层的编码过程变得更为轻松. 传统上,Hibernate的配置依赖于外部 XML 文件:数据库映射被定义为一组 XML 映射文件,并且在启动时进行加载.    在最近发布的几个Hibernate版本中,出现了一种基于 Java 5 注释的更为巧妙的新方法.借助新的 Hibernate

hibernate annotation映射关系详解

在hibernate中处理关系映射的方法有两种.一种是使用传统的xml来处理它们的映射关系,另一种是基于annotation的注解方式.我个人非常喜欢使用annotation,觉得这种方式显得更加的简洁,大大减少工作量.在hibernate4中annotation包无需再引入,因为已经集成了annotation包. 在讲hibernate annotation之前,我们先回想一下.在数据库创建表的时候有几个关键点是必须的.表名.字段名.字段类型.约束条件.从这些点出发我们来看看一个hiberna

Hibernate annotation多对多配置

角色(用户组),用户多对多. 角色实体配置: private Set<TAuthUser> users; @ManyToMany @JoinTable(name="t_auth_user_role",joinColumns={@JoinColumn(name="role_id")},inverseJoinColumns={@JoinColumn(name="user_id")})//配置一方 public Set<TAuthUs

Rhythmk 学习 Hibernate 07 - Hibernate annotation 实体注解

参考: http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/ 1.系统配置: 可以通过使用  mapping的 resource,于class 属性混合配置 <mapping resource="com/rhythmk/model/product.hbm.xml" /> <mapping class="com.rhythmk.model.User"&

Hibernate Annotation关系映射, 级联cascade属性

Hibernate Annotation关系映射, 级联cascade属性一. Hibernate Annotation关系映射 1.一对一外键关联映射(单向) 2.一对一外键关联映射(双向) 3.一对一主键关联映射(不重要)在这不演示 在实际中很少用,使用注解@PrimaryKeyJoinColumn 意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用 注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML 映射可以生成.Annotation注解一对