一 单向多对一生活举例
二 实现方式
多对一的关系和关系数据库中的外键参照关系最匹配,即在多方的表中的一个外键参照一方表的主键。
通过在多方持有一方的引用实现,需要在“多”的一端使用<many-to-one>配置。
三 单向多对一的配置
1 Student.java
package com.imooc.entity;
import java.io.Serializable;
public class Student implements Serializable {
private int sid;
private String sname;
private String sex;
// 在多方定义一个一方的引用
private Grade grade;
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Student() {
super();
}
public Student(String sname, String sex) {
super();
this.sname = sname;
this.sex = sex;
}
}
2 Student.hbm.xml配置
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<hibernate-mapping>
<class name="com.imooc.entity.Student" table="student">
<id name="sid" column="sid" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="sname" type="java.lang.String">
<column name="sname" length="20" not-null="true"></column>
</property>
<property name="sex">
<column name="sex"></column>
</property>
<!-- 配置多对一关联关系 -->
<many-to-one name="grade" class="com.imooc.entity.Grade" column="gid" ></many-to-one>
</class>
</hibernate-mapping>
四 测试添加学生信息
1 测试代码
package com.imooc.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.imooc.entity.Grade;
import com.imooc.entity.Student;
import com.imooc.util.HibernateUtil;
/*
* 单向多对一(学生--->班级)
*/
public class Test02 {
public static void main(String[] args) {
save();
}
//保存
public static void save(){
Grade g=new Grade("Java一班","Java软件开发一班");
Student stu1=new Student("慕女神", "女");
Student stu2=new Student("小慕慕", "男");
//设置关联关系
stu1.setGrade(g);
stu2.setGrade(g);
Session session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
session.save(g);
session.save(stu1);
session.save(stu2);
tx.commit();
HibernateUtil.closeSession(session);
}
}
2 测试结果
Hibernate: select max(gid) from grade
Hibernate: select max(sid) from student
Hibernate: insert into grade (gname, gdesc, gid) values (?, ?, ?)
Hibernate: insert into student (sname, sex, gid, sid) values (?, ?, ?, ?)
Hibernate: insert into student (sname, sex, gid, sid) values (?, ?, ?, ?)
相关推荐
《Hibernate4实战》详细介绍了单向和双向的一对一、一对多、多对一和多对多关系的映射方式。通过具体示例,读者可以了解如何在实体类中使用`@OneToOne`、`@OneToMany`、`@ManyToOne`和`@ManyToMany`注解来定义这些...
在本项目中,"hibernate关联关系2"是一个关于使用Hibernate框架处理数据库关联关系的实战案例。Hibernate是一个流行的开源对象关系映射(ORM)工具,它允许开发人员使用Java对象来操作数据库,极大地简化了数据库...
同时,书中涵盖了单向和双向一对多、一对一、多对多等各种关系映射的实现方法。 四、Hibernate查询语言(HQL) HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但更专注于对象。书中讲解了HQL的基本语法,包括...
Hibernate支持一对一、一对多、多对一和多对多四种关联关系的映射,包括单向和双向关联,以及懒加载和立即加载策略。 十、性能优化 为了提高性能,可以采用批处理、延迟加载、缓存策略等手段。比如,使用BatchSize...
3. **实体关系**:分析源码中的单向、双向关联,一对多、一对一、多对多等关系映射的实现。 通过深入研究Hibernate5的源码,开发者可以更熟练地掌握ORM技巧,理解其内部机制,进而提高开发效率并解决实际问题。而...
在“Introduction to Hibernate”部分,文档引导开发者从零开始构建第一个Hibernate应用。这包括创建基本的实体类、定义映射文件、配置Hibernate环境、使用Ant进行构建等步骤。这一过程不仅涵盖了基础概念的介绍,还...
6. **关联映射**:涵盖了单向、双向、一对多、多对一、一对一等多种关联关系的配置和使用。 7. **缓存机制**:介绍了第一级缓存和第二级缓存的概念,以及如何利用缓存提高性能。 8. **性能优化**:提供了优化...
- **更新数据库**:Hibernate还提供了对现有数据库进行同步的功能,当实体类发生变化时,可以根据新的实体类自动更新数据库结构。 **4. 实战应用** 在实际项目中,开发者通常先设计好对象模型,然后通过反向工程...
- **关系映射**:MyBatis支持处理复杂的关系,例如一对一、一对多等关系的映射。 - **懒加载**:在查询时,默认情况下只加载直接关联的数据,而关联对象的数据会在真正需要时才加载,这种机制称为懒加载。 #### 8. ...
《软件开发课程设计》文档涵盖了多个软件开发的关键领域,包括JavaScript、Java、JDBC、Servlet、MVC设计模式、Hibernate、Spring以及Ajax等技术。以下是这些知识点的详细说明: 1. **JavaScript基础**:JavaScript...
【标题】:学生作业管理系统 这个“学生作业管理系统”是一个典型的IT项目,旨在提供一个平台,方便教师管理和学生提交、...对于开发者而言,这是一个宝贵的实战经验,对于学习者来说,是理论与实践相结合的良好机会。
此项目不仅涉及技术的综合运用,还涉及到项目管理和团队协作,对毕业生来说,是一个提升实战技能和理解软件工程全貌的好机会。通过这个系统,可以学习到Spring Boot的微服务架构、Vue.js的前端开发实践,以及数据库...
Web2,相对于Web1.0的单向信息传递,强调的是互动性和用户参与度,它是互联网发展的一个重要阶段,带来了丰富的社交媒体、在线协作工具以及更加动态的网页体验。在本手册中,我们将深入探讨使用Java开发Web2应用程序...