hibernate 4.3
// 宿舍, 一端
public class Dorm {
@Id
@GeneratedValue
private Long id;
// 宿舍名称
@NotBlank
private String name;
// 住宿人数
@NotNull
private Integer stayCount;
// 床位
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, orphanRemoval=true, mappedBy="dorm")
// @JoinColumn(name="dorm_id")
private List<Bed> beds = new ArrayList<Bed>();
...
}
// 床位, 多端
public class Bed {
@Id
@GeneratedValue
private Long id;
// 床位
@NotBlank
private String number;
// 宿舍
@ManyToOne
// @JoinColumn(name="dorm_id")
@JsonIgnore // json数据获取的时候要JsonIgnore加忽略dorm属性,因为dorm.getBed(),获取床位属性, 如果在bed.getDorm()再获取属性, 就会形成死循环
private Dorm dorm;
...
}
hibernate默认的描述关系是创建一个关联表, 根据sql打印, 每次修改bed, 都会将关联表的记录删除再逐个添加.
而关联关系添加 @JoinColumn(name="dorm_id")后, 不再生成关联表,而是通过字段dorm_id关联, 更新删除bed的效率高很多,但是在维护关系的时候, bed需要手动设置dorm,
public void saveOrUpdate(Dorm dorm){
for(Bed bed : dorm.getBeds()){
bed.setDorm(dorm);
}
dormDao.save(dorm);
}
这个是多一个操作的地方.
设置orphanRemoval=true一大好处, 当dorm中的bed记录被删除(dorm的数据有前台提交),保存dorm时, hibernate会自动的同步数据库, 这下就省事多了
mappedBy="dorm" 关联到多端的dorm属性,利用dorm属性进行关联.与添加@JoinColumn(name="dorm_id") 有相同的功效
分享到:
相关推荐
首先,我们需要理解`@OneToMany`的基本配置: 1. **mappedBy**:此属性用于指定被关联方(子实体)中的引用字段,通常是一个`@ManyToOne`注解的字段,表明了反向的一对一关系。 2. **fetch**:定义加载策略,可以是`...
在Hibernate中,这种关系可以通过在实体类中定义`@OneToMany`注解来表示。 **配置实体类** 1. **父实体类**:在这个关系中,"一"端的实体称为父实体。例如,我们用`Student`作为父实体,它有一对多的课程关联。在`...
在实际应用中,我们需要配置Hibernate的SessionFactory,并创建实体的Session,通过Session进行CRUD操作。在处理`@OneToMany`关系时,需要注意避免N+1查询问题,可以通过HQL或Criteria API进行优化。 总结来说,`@...
4. **关系映射**:注解如`@ManyToOne`, `@OneToMany`, `@OneToOne`, `@ManyToMany`等,它们在实体类的属性上声明,描述实体间的关联关系。 **标签解析** "源码"和"工具"这两个标签暗示了讨论可能涉及实际代码示例...
本课程"Hibernate-OneToMany-Advance-udemy"聚焦于Hibernate中的一对多关联映射,这是一种常见的数据库关系模型,尤其在处理具有层级结构的数据时显得尤为重要。 在Hibernate中,一对多关联映射表示一个实体可以与...
通过@Entity、@Table、@Id等注解,可以将Java实体类映射到数据库表,而@ManyToOne、@OneToMany等注解则用于描述对象之间的关系。此外,@GeneratedValue可以用于自动生成主键,@Transactional注解也可以在这里用于...
在这个"hibernate的xml配置关系例子"中,我们将探讨如何使用XML配置文件来定义Java对象与数据库表之间的映射关系。 1. Hibernate XML配置文件: Hibernate的核心配置文件通常是`hibernate.cfg.xml`,这个文件包含...
- **一对多、多对一、多对多关联映射**: Hibernate 支持各种关联关系,通过 @OneToMany、@ManyToOne、@ManyToMany 注解实现。 **4. 实例应用** - 创建一个简单的用户管理系统,定义 User 实体类,包含 id、name、...
对于字段,`@Column`注解指定列名,`@ManyToOne`, `@OneToOne`, `@OneToMany`, `@ManyToMany`等注解定义关联关系。 5. **DAO层**:创建DAO(Data Access Object)接口和实现类,使用Hibernate的Session API进行数据...
本篇文章将深入探讨Hibernate中常见的几种关联关系及其基本配置。 一、一对一(OneToOne)关联 在一对一关联中,一个实体对象只对应数据库中的一个记录。配置方式通常通过`@OneToOne`注解实现,可以设置`mappedBy`...
本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 一、Hibernate对象三状态 1. 游离态(Detached):对象在应用程序中创建,但尚未与Session...
4. **集合映射与关联关系**: Hibernate 支持一对多、多对一、一对一和多对多的关联映射,如 `@OneToMany`, `@ManyToOne`, `@OneToOne` 和 `@ManyToMany`。 5. **级联操作**: 通过设置级联属性,如 `cascade="save-...
【hibernate基本配置及使用方法】 Hibernate是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序与关系数据库之间的交互。本教程将详细解释Hibernate的基本配置和使用步骤,帮助初学者快速掌握这一强大...
3. 关联映射:包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)关系。 4. 集合映射:List、Set、Map等集合类型与数据库表列的映射。 十、最佳实践 1. 使用SessionFactory...
例如,Spring4的`@Autowired`注解可以自动装配Bean,而Hibernate4的`@ManyToOne`、`@OneToMany`等注解用于描述对象间的关系。 在实际项目中,这个框架组合可以实现业务逻辑、数据持久化和用户交互的高效协同。...
对于关联关系,有`@OneToOne`, `@ManyToOne`, `@OneToMany`, `@ManyToMany`等注解。 此外,集合映射是Hibernate中的一个重要部分。例如,`<set>`用于映射Java集合到数据库的表,`<list>`映射到有序的列表,`<map>`...
此外,`@ManyToOne`、`@OneToOne`、`@OneToMany`和`@ManyToMany`注解用于建立对象间的关联关系。 整合Spring和Hibernate时,我们通常会使用Spring的数据访问抽象层,如`@Transactional`注解来标记事务方法,Spring...
在Hibernate框架中,注解配置被广泛用于简化对象关系映射(ORM)的配置,使得Java Bean可以直接与数据库表进行关联。本篇文章将深入探讨如何使用注解配置Java Bean并建立Hibernate的关联关系。 首先,我们需要理解...
另外,外键关系可以通过@ManyToOne或@OneToMany等注解来定义一对多或多对一的关系。 另一方面,XML配置则提供了一种更为传统的方式来描述映射关系。通过编写XML文件来定义实体类和数据库表的映射,以及配置其他一些...