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了,这样就可以防止一个空的身份证记录进数据库。
分享到:
相关推荐
每个关联注解都有各自的属性,如mappedBy、cascade、fetch等,用于控制关联的细节。 7. **懒加载和立即加载注解(@LazyCollection and @Fetch)** Hibernate提供了懒加载和立即加载两种机制。`@LazyCollection`用于...
**Hibernate 3 注解技术详解** 在Java世界中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。 Hibernate 3引入了注解支持,使得开发人员无需XML配置文件即可进行对象持久化,提高了...
【Hibernate注解详解】 在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,使得开发者可以方便地在Java对象与数据库表之间建立映射。为了简化配置,Hibernate引入了注解机制,允许开发者在Java类和类...
**hibernate 注解详解** Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者使用面向对象的方式操作数据库。在 Hibernate 中,注解是实现数据持久化的重要手段,它极大地简化了传统XML配置文件的...
《Hibernate注解详解》 Hibernate作为一款强大的Java持久化框架,极大地简化了数据库操作。在现代开发中,使用注解的方式进行配置已成为主流,它使得代码更加简洁且易于维护。本文将深入探讨Hibernate注解的使用,...
- `mappedBy`:指定目标端的属性名,此属性需用`@ManyToOne`或`@OneToOne`注解。 - `cascade`:级联操作,同`@ManyToOne`。 ### 示例代码解析 假设我们有两个实体类`User`和`Address`,它们之间存在多对一的关系...
@OneToMany(mappedBy = "table1", fetch = FetchType.LAZY) private List<Table2> table2List; // ... } Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.begin...
【Hibernate注解配置详解】 在Java的持久化框架中,Hibernate是一个非常重要的工具,它极大地简化了数据库操作。本文将深入探讨Hibernate的注解配置,包括实体类的注解、映射关系的定义以及事务管理等方面,帮助你...
在这里,`mappedBy`属性用于指定对方实体中的字段,而`@JoinColumn`则用于指定外键所在的表和列。 2. **XML配置方式** 如果不使用注解,我们可以在`hibernate.cfg.xml`或`persistence.xml`中进行配置。例如: `...
此外,还需要通过`mappedBy`属性指定关联的字段。 ### 3. 多对一关系 多对一关系与一对多关系相反,即多个实体对应一个实体。例如,多个订单可以属于一个客户。在Hibernate中,`@ManyToOne`注解用于多方实体,`@...
在双向关联中,需要在两个实体类的属性上分别添加`@OneToMany`和`@ManyToOne`注解,并通过`mappedBy`属性指定关联的另一端。 ```java @Entity public class User { @Id private Integer id; // ... @OneToMany...
在Hibernate中,我们通常通过在一方的类中添加`@OneToOne`注解,并指定`mappedBy`属性来映射到另一方的主键。例如,Person类的配置可能是这样的: ```java @Entity public class Person { @Id private int id; ...
@OneToMany(mappedBy = "user") private List<Order> orders; } @Entity public class Order { // ... @ManyToOne @JoinColumn(name = "user_id") private User user; } ``` ### Hibernate CRUD 操作 ...
**Hibernate注解详解** 在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。自Hibernate 3开始,引入了注解(Annotation)支持,使得开发者无需XML配置就能实现对象与数据库...
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "users") private Set<Classes> classes = new HashSet(); // Getter和Setter方法 // ... } ``` #### 三、注解详解 - **@Entity**: 标记类为实体类。 - **...
### Hibernate注解(Annoatation)中文版详解 #### 版本:3.2.0CR1 在Java开发领域中,Hibernate作为一款流行的开源对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者用面向对象的方式来处理数据库...
使用`@OneToMany`注解,可以通过`mappedBy`属性指定多的一方维护关系,或者在一方使用`@JoinColumn`指定外键。 3. **多对一(Many-to-One)**:多个实体可以关联到一个实体,例如多个学生属于一个班级。使用`@...
《Hibernate注解详解》 在Java的持久化框架中,Hibernate以其强大的功能和灵活的配置深受开发者喜爱。本文将深入探讨Hibernate注解的使用,帮助读者理解如何通过注解简化对象关系映射(ORM)的过程。 一、...
这里,Person类中的`mappedBy`属性指明了外键字段所在的一方。 **三、备注** 在进行一对一映射时,需要注意以下几点: - `cascade`属性用于定义级联操作,如删除或保存操作是否同时影响关联的对象。 - `...