表设计:
有一张中间表,中间表中有两张关联表的外键
如:student与teacher

Student:
package cn.framelife.mvc.entity;
import java.util.Set;
public class Student {
private Integer id;
private String name;
private Set<Teacher> teachers;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Teacher> getTeachers() {
return teachers;
}
public void setTeachers(Set<Teacher> teachers) {
this.teachers = teachers;
}
}
Teacher:
package cn.framelife.mvc.entity;
import java.util.Set;
public class Teacher {
private Integer id;
private String name;
private Set<Student> students;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
Student.hbm.xml:
<hibernate-mapping>
<class name="cn.framelife.hibernate.entity.Student" table="student">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="s_name" length="45" not-null="true" />
</property>
<set name="teachers" table="s_t" cascade="all">
<key column="student_id"/>
<many-to-many column="teacher_id" class="cn.framelife.hibernate.entity.Teacher"></many-to-many>
</set>
</class>
</hibernate-mapping>
Teacher.hbm.xml:
<hibernate-mapping>
<class name="cn.framelife.hibernate.entity.Teacher" table="teacher" catalog="hibernate">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="t_name" length="45" not-null="true" />
</property>
<set name="students" table="s_t" >
<key column="teacher_id"/>
<many-to-many column="student_id" class="cn.framelife.hibernate.entity.Student"></many-to-many>
</set>
</class>
</hibernate-mapping>
增加:
Student s1 = new Student();
s1.setName("s10");
Student s2 = new Student();
s2.setName("s11");
Set<Teacher> set = new HashSet<Teacher>();
Teacher t1 = new Teacher();
t1.setName("t10");
Teacher t2 = new Teacher();
t2.setName("t11");
set.add(t1);
set.add(t2);
//设置学生与老师的的关系
s1.setTeachers(set);
s2.setTeachers(set);
//增加两个学生,同时会把老师也加到数据库中
session.save(s1);
session.save(s2);
分享到:
相关推荐
在多对一连接表单向关联中,多个实体(子实体)与一个实体(父实体)相关联,这种关联通过第三个表(连接表或关联表)来实现。 **表结构示例**: - **Department表**: - `departmentid`: 主键 - `departmentName`...
Mybatis还支持关联映射,如一对多、多对一的关系映射。例如,如果`User`类还有一对多的`Address`关系,可以使用`<collection>`标签: ```xml <!-- ... --> <!-- ... --> ``` 此外,Mybatis提供了自动...
"hibernate_many2many_2"这个文件名可能是指一个关于Hibernate多对多关联的示例或教程的第二部分,可能包含配置文件、Java实体类、映射文件以及相关的测试代码。 **详细知识点:** 1. **实体类定义**:在Hibernate...
在数据库设计中,这种关联关系是常见的,例如一个用户可以有多个订单(一对多),一个订单对应一个用户(多对一),而一个商品可以被多个订单购买,同时一个订单也可以包含多个商品(一对多双向关联)。这个标题暗示...
9. **扩展功能**:除了基础的按键映射,高级软件还可能提供热键设置、宏录制、多配置文件切换等功能,以满足不同用户的需求。 10. **备份与恢复**:保存并定期备份映射配置至关重要,这样在系统重装或软件升级后,...
9. **缓存机制**:理解Hibernate的第一级缓存(Session缓存)和第二级缓存(可选,如EHCache),它们如何影响一对多关联的读写操作。 10. **性能考虑**:在设计一对多双向组合关联时,要考虑到查询效率、内存消耗等...
3. **实体类(Entities)**:阐述了如何定义表示数据库表的实体类,以及如何定义它们之间的关系,如一对一、一对多、多对多。 4. **查询(Linq to Entities)**:展示了如何使用Linq(Language Integrated Query)...
通过谢希仁编著的《计算机网络》第八版第九章内容,我们可以了解无线网络和移动网络的基本概念、技术和相关标准。 首先,无线局域网(WLAN)可以根据是否有固定基础设施分为两大类:有固定基础设施的和无固定基础...
题目中指出,映射可能是多对一的关系,即B中的元素可以对应A中的多个元素,但A中的每个元素在B中必须有且仅有一个象。 4. **映射的表示与计算**:映射可以通过函数关系式来表示,如题目中的f:x→x²或者f:x→x+y...
12.4.9 多对多双向关联的annotation注解实现545 12.4.10 组成关系映射的annotation注解实现547 12.4.11 继承关系映射的annotation注解实现549 12.4.12 hibernate集合映射的annotation注解实现552 12.5 基于...
映射的性质,如一对一、一对多、多对一和多对多映射,以及逆映射、复合映射的概念都会被详细解释。 第三章“关系”涵盖了关系的定义、性质和分类,如自反性、对称性、传递性和反传递性。此外,关系的闭包、关系的度...
【CsGL纹理映射】是基于C#编程语言利用CsGL库实现OpenGL图形库中的纹理映射技术。OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形,而CsGL是.NET框架下的一个OpenGL封装库,使得C#开发者也能方便地...
15.3 映射双向多对多关联关系 15.3.1 关联两端使用元素 15.3.2 在inverse端使用元素 15.3.3 使用组件类集合 15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索...
15.3 映射双向多对多关联关系 15.3.1 关联两端使用元素 15.3.2 在inverse端使用元素 15.3.3 使用组件类集合 15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索...
15.3 映射双向多对多关联关系 15.3.1 关联两端使用元素 15.3.2 在inverse端使用元素 15.3.3 使用组件类集合 15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索...
15.3 映射双向多对多关联关系 15.3.1 关联两端使用元素 15.3.2 在inverse端使用元素 15.3.3 使用组件类集合 15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索...
集合映射如one-to-many、many-to-many以及value collections可以实现多对一和多对多的关系,延迟加载(lazy initialization)能提高性能,sorted collections和bidirectional associations则是管理关联关系的重要...
- **7.5.1 一对多 (one to many)/多对一 (many to one)**:说明使用连接表的双向一对多/多对一关联映射。 - **7.5.2 一对一 (one to one)**:介绍使用连接表的双向一对一关联映射。 - **7.5.3 多对多 (many-to-...
第一章 SELECT查询 写一条SELECT查询语句 在查询中使用表达式、运算符 对空值的处理 ...第九章 对数据的操作 在已创建表中插入新的数据 修改已经存在的数据 删除表中的数据 理解事物控制及其重要性 等等......