`
shenyuc629
  • 浏览: 195689 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

hibernate的注解属性mappedBy详解

阅读更多
mappedBy:
1>只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
2>mappedBy标签一定是定义在被拥有方的,他指向拥有方;
3>mappedBy的含义,应该理解为,拥有方能够自动维护跟被拥有方的关系,当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的;
4>mappedBy跟joinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被拥有方。mappedBy这方定义JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表。

下面是一个例子:
   人跟身份证双向关联
   在Person里面定义的注解:
@OneToOne(cascade = CascadeTye.ALL,optional = true)
public IDCard getIdCard(){
   return idCard;
}


@OneToOne(cascade = CascadeType.ALL,mappedBy = "idCard",optional = false)
public Person getPerson(){
   return person;
}


多了一个mappedBy这个方法,他表示什么呢?它表示当前所在表和Person的关系是定义在Person里面的idCard这个成员上面的,他表示此表是一对一关系中的从表,也就是关系是在person表中维护的,这是最重要的。Person表是关系的维护者,有主导权,它有个外键指向IDCard。
我们也可以让主导权在IDCard上面,也就是让他产生一个指向Person的外键,这也是可以的,但是最好让Person来维护整个关系,这样更符合我们的思维。
我们也可以看到在Person里面的IDCard是注释optional=true,也就是说一个人是可以没有身份证的,但是一个身份证是不可以没有人的,所以在IDCard里面注释Person的时候,optional=false了,这样就可以防止一个空的身份证记录进数据库。
分享到:
评论
4 楼 炭烧鸳鸯奶茶 2017-11-09  
遇见那只猫 写道
哈艾薇儿 写道
时隔那么久了,就没人发现楼主说错了吗?

哪错了?

3 楼 炭烧鸳鸯奶茶 2017-11-09  

person表有了mapped后放弃维护权
2 楼 遇见那只猫 2017-09-29  
哈艾薇儿 写道
时隔那么久了,就没人发现楼主说错了吗?

哪错了?
1 楼 哈艾薇儿 2016-10-27  
时隔那么久了,就没人发现楼主说错了吗?

相关推荐

    hibernate注解详解

    每个关联注解都有各自的属性,如mappedBy、cascade、fetch等,用于控制关联的细节。 7. **懒加载和立即加载注解(@LazyCollection and @Fetch)** Hibernate提供了懒加载和立即加载两种机制。`@LazyCollection`用于...

    Hibernate 3 注解技术讲解

    **Hibernate 3 注解技术详解** 在Java世界中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。 Hibernate 3引入了注解支持,使得开发人员无需XML配置文件即可进行对象持久化,提高了...

    Hibernate注解大全收藏

    【Hibernate注解详解】 在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,使得开发者可以方便地在Java对象与数据库表之间建立映射。为了简化配置,Hibernate引入了注解机制,允许开发者在Java类和类...

    hibernate 注解的一些资料

    **hibernate 注解详解** Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者使用面向对象的方式操作数据库。在 Hibernate 中,注解是实现数据持久化的重要手段,它极大地简化了传统XML配置文件的...

    Hibernate 注解

    《Hibernate注解详解》 Hibernate作为一款强大的Java持久化框架,极大地简化了数据库操作。在现代开发中,使用注解的方式进行配置已成为主流,它使得代码更加简洁且易于维护。本文将深入探讨Hibernate注解的使用,...

    hibernate注解 级联 多对一 一对多

    - `mappedBy`:指定目标端的属性名,此属性需用`@ManyToOne`或`@OneToOne`注解。 - `cascade`:级联操作,同`@ManyToOne`。 ### 示例代码解析 假设我们有两个实体类`User`和`Address`,它们之间存在多对一的关系...

    hibernate多表查询详解

    @OneToMany(mappedBy = "table1", fetch = FetchType.LAZY) private List<Table2> table2List; // ... } Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.begin...

    Hibernate 注解配置

    【Hibernate注解配置详解】 在Java的持久化框架中,Hibernate是一个非常重要的工具,它极大地简化了数据库操作。本文将深入探讨Hibernate的注解配置,包括实体类的注解、映射关系的定义以及事务管理等方面,帮助你...

    hibernate一对一关系详解

    在这里,`mappedBy`属性用于指定对方实体中的字段,而`@JoinColumn`则用于指定外键所在的表和列。 2. **XML配置方式** 如果不使用注解,我们可以在`hibernate.cfg.xml`或`persistence.xml`中进行配置。例如: `...

    Hibernate对象关系详解

    此外,还需要通过`mappedBy`属性指定关联的字段。 ### 3. 多对一关系 多对一关系与一对多关系相反,即多个实体对应一个实体。例如,多个订单可以属于一个客户。在Hibernate中,`@ManyToOne`注解用于多方实体,`@...

    Hibernate一对多映射配置详解

    在双向关联中,需要在两个实体类的属性上分别添加`@OneToMany`和`@ManyToOne`注解,并通过`mappedBy`属性指定关联的另一端。 ```java @Entity public class User { @Id private Integer id; // ... @OneToMany...

    Hibernate各种表关系映射配置详解

    在Hibernate中,我们通常通过在一方的类中添加`@OneToOne`注解,并指定`mappedBy`属性来映射到另一方的主键。例如,Person类的配置可能是这样的: ```java @Entity public class Person { @Id private int id; ...

    HibernateAnnotations 中文版

    @OneToMany(mappedBy = "user") private List<Order> orders; } @Entity public class Order { // ... @ManyToOne @JoinColumn(name = "user_id") private User user; } ``` ### Hibernate CRUD 操作 ...

    Hibernate annotation 详解

    **Hibernate注解详解** 在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。自Hibernate 3开始,引入了注解(Annotation)支持,使得开发者无需XML配置就能实现对象与数据库...

    hibernate+jpa注解教程

    @ManyToMany(fetch = FetchType.EAGER, mappedBy = "users") private Set<Classes> classes = new HashSet(); // Getter和Setter方法 // ... } ``` #### 三、注解详解 - **@Entity**: 标记类为实体类。 - **...

    hibernate_anoatation(中文版)

    ### Hibernate注解(Annoatation)中文版详解 #### 版本:3.2.0CR1 在Java开发领域中,Hibernate作为一款流行的开源对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者用面向对象的方式来处理数据库...

    hibernate对应关系详解

    使用`@OneToMany`注解,可以通过`mappedBy`属性指定多的一方维护关系,或者在一方使用`@JoinColumn`指定外键。 3. **多对一(Many-to-One)**:多个实体可以关联到一个实体,例如多个学生属于一个班级。使用`@...

    Hibernate annotation

    《Hibernate注解详解》 在Java的持久化框架中,Hibernate以其强大的功能和灵活的配置深受开发者喜爱。本文将深入探讨Hibernate注解的使用,帮助读者理解如何通过注解简化对象关系映射(ORM)的过程。 一、...

    详解Hibernate一对一映射配置

    这里,Person类中的`mappedBy`属性指明了外键字段所在的一方。 **三、备注** 在进行一对一映射时,需要注意以下几点: - `cascade`属性用于定义级联操作,如删除或保存操作是否同时影响关联的对象。 - `...

Global site tag (gtag.js) - Google Analytics