在这里我直接就说hibernate的一对多的双向关联,对于一对多的单项关联和多对一的单项关联几乎就没用到,在项目中也很少使用。
首先有两张关联的表,类别表Category和展品表Product,一个类别对应多种展品,
category字段有 id(主键),name
product字段有 id(主键) name,price,c_id(这个就是外键)
在Category类中
private Integer id;
private String name;
private Set<Product> products=new HashSet();//注意这里不要只写private Set<Product> products,不然后面会出现问题的,因为在取集合的时候回返回null,这样是不行的
定义好属性后再分别生成对于的get/set方法
在Product类中
private Integer id;
private String name;
private Double price;
private Category category;
再分别生成对对应的get/set方法
在设置相应的.hbm.xml文件
在Category.hbm.xml文件中
<hibernate-mapping>
<class name="com.cheng.entry.Category" table="category">
<id name="id" type="java.lang.Integer">
<column name="id"></column>
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String">
<column name="name" length="255"></column>
</property>
<set name="products(这个表示的就是Category类中的Set集合)">
<key column="c_id(这个说明的就是在表product中的外键)"></key>
<one-to-many class="com.cheng.entry.Product(说明所在的类)"/>
</set>
</class>
</hibernate-mapping>
在Product.hbm.xml中
<hibernate-mapping>
<class name="com.cheng.entry.Product" table="product">
<id name="id" type="java.lang.Integer">
<column name="id"></column>
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String">
<column name="name" length="200"></column>
</property>
<property name="price" type="java.lang.Double">
<column name="price" ></column>
</property>
<many-to-one name="category(这个就是在Product类中定义的)" class="com.cheng.entry.Category">
<column name="c_id(对应product表中的外键)"></column>
</many-to-one>
</class>
</hibernate-mapping>
这样就完成了
在这里还可以在
一方中设置 cascade属性
<set name="products(这个表示的就是Category类中的Set集合)" cascade="save-update">
<key column="p_id(这个说明的就是在表product中的外键)"></key>
<one-to-many class="com.cheng.entry.Product(说明所在的类)"/>
</set>
表示的级联,意思就是说主动方执行操作时,被关联的对象(被动方)是否要同步执行同一操作(在一对多的关联中,一般都是一方是主动方)
cascade有四个值:
none:什么也不做
save-update:一方进行添加和更新时(这个经常用)
all:所以操作
delete:
delete-orphan:
在一方中可以设置反转inverse="true"
控制反转,在一对多中让多方变为主动对象
分享到:
相关推荐
"多对多双向关联"是Hibernate中一种关系映射类型,涉及两个实体类之间的复杂关联。在数据库设计中,多对多关系意味着一个实体可以与多个其他实体相关联,反之亦然。例如,学生可以选修多门课程,课程也可以被多名...
对于初学者来说,通过阅读和分析这样的例子,能更好地理解和掌握Hibernate中一对多、多对一以及双向关联的实践应用。 总结,学习和理解Hibernate中的一对多、多对一和双向关联关系,对于开发基于Java的持久化层至关...
**hibernate_second项目源码**是一...通过详细研究**hibernate_second**项目,开发者不仅可以掌握Hibernate中一对多双向关联的实现,还能学习到如何在实际项目中有效管理数据库操作,提升Java应用程序的数据处理能力。
本篇文章将深入探讨 Hibernate 中的一对多双向关联映射。 在数据库设计中,一对多关联是指一个实体可以与多个其他实体相关联,比如一个学生可以有多个课程,一个部门可以有多名员工。在Hibernate中,这种关系可以...
本篇文章将深入探讨Hibernate中一对多单向关联映射的概念、配置以及其实现方法。 一、概念理解 一对多关联意味着在数据库中,一个表(实体)的一条记录可以对应另一个表(实体)的多条记录。例如,一个学生可以有多...
总结起来,Hibernate中的一对多/多对一关联是通过主外键映射来实现的,通过注解和配置文件定义实体间的关联关系,利用懒加载或立即加载策略控制数据获取,同时要注意双向关联的维护和级联操作的设置,以确保数据的...
总结,双向一对一基于主键的关联映射是Hibernate中一种重要的关联类型,它提供了两个实体类之间的直接导航属性,使得数据操作更加便捷。在实际项目中,需要根据需求谨慎选择关联类型,并确保数据一致性。
多对多关联意味着两个实体之间存在一对多的双向关系。这种关系需要一个中间表来存储两个实体的连接。使用`@ManyToMany`注解,可以创建一个中间实体(关联表)或者使用`@JoinTable`注解定义中间表。示例如下: ```...
在本篇文章中,我们将深入探讨Hibernate中的几种关联映射,包括多对一(Many-to-One)、一对一(One-to-One)以及一对多(One-to-Many)映射。 首先,我们来看多对一(Many-to-One)的关联映射。这种映射关系通常...
“Hibernate高级特性.pdf”这本书可能深入探讨了Hibernate的高级功能,如第二级缓存、Cascading和Association Management、一对一、一对多、多对一、多对多的关联关系处理、双向关联的维护,以及延迟加载和立即加载...
`hb_04_many2many_bidirectional`和`hb_04_many2many_unidirectional`分别表示多对多的双向和单向映射。在多对多映射中,通常需要一个中间表来存储两个实体的关联关系。 通过学习和实践这些示例,开发者可以更好地...
4. **关联映射**:学习如何处理一对多、多对一、一对一和多对多的关系映射。 5. **缓存机制**:熟悉Hibernate的缓存策略,如第一级缓存和第二级缓存,以及查询缓存,以优化性能。 6. **性能优化**:包括延迟加载、...
14. **一对多(One-to-Many)、多对一(Many-to-One)、多对多(Many-to-Many)关系映射**:Hibernate提供了多种关联映射方式,如List、Set、Map等,以适应不同类型的关联关系。 15. **双向关联**:在关联映射中,...
例如,`@OneToOne`用于一对一关系,`@ManyToOne`和`@OneToMany`用于一对多,`@ManyToMany`处理多对多关联。 6. **组件(Components)**:组件是对象的一个部分,可以映射到数据库的一个或多个表。它们通常用作复杂...
桥接技术是Hibernate Search中一个有趣的功能,它允许你在实体的非字段属性上执行搜索,比如计算属性或关联实体的属性。通过定义一个桥接器(Bridge),你可以告诉Hibernate Search如何将这些属性的值映射到索引中,...
- **多对多(Many-to-Many)**:这种关系比较复杂,通常需要一个中间表来存储两个类的关联。在双方类中使用`@ManyToMany`,并通过`@JoinTable`来定义中间表的配置,包括joinColumns和inverseJoinColumns,分别对应...
12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托...
12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托...