一 双向多对一生活举例
二 Grade.hbm.xml配置一对多关联关系
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<hibernate-mapping>
<class name="com.imooc.entity.Grade" table="grade">
<id name="gid" column="gid" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="gname" type="java.lang.String">
<column name="gname" length="20" not-null="true"></column>
</property>
<property name="gdesc">
<column name="gdesc"></column>
</property>
<!-- 配置一对多关联关系 -->
<set name="students" table="student">
<key column="gid"></key>
<one-to-many class="com.imooc.entity.Student"/>
</set>
</class>
</hibernate-mapping>
三 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>
四 测试代码
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("小慕慕", "男");
//设置关联关系
g.getStudents().add(stu1);
g.getStudents().add(stu2);
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);
}
}
五 测试结果
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 (?, ?, ?, ?)
Hibernate: update student set gid=? where sid=?
Hibernate: update student set gid=? where sid=?
从后台输出来看,多余了两条update语句。
相关推荐
本篇文章将深入探讨"一对多"、"多对一"以及"一对多双向关联"的概念,并结合实际例子进行详细讲解。 首先,我们来看"一对多"(One-to-Many)关系。在现实生活中,一个学生可以对应多个课程,这就是典型的"一对多...
**标题解析:** "Hibernate 一对多双向映射及乐观锁使用" 在Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,能够帮助开发者将数据库操作转化为面向对象的编程,简化了数据访问层的实现。"一对多"是...
**标题:“Hibernate多对多映射实战”** 在Java领域,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本示例主要聚焦于使用Hibernate处理数据库中的多对多关系,这是一种复杂但常见的关联类型。在关系...
7.3.1 多态的多对一关联 7.3.2 多态集合 7.3.3 对联合的多态关联 7.3.4 每个具体类一张多态表 7.4 小结 第8章 遗留数据库和定制SQL 8.1 整合遗留数据库 8.1.1 处理主键 8.1.2 带...
《Hibernate4实战》详细介绍了单向和双向的一对一、一对多、多对一和多对多关系的映射方式。通过具体示例,读者可以了解如何在实体类中使用`@OneToOne`、`@OneToMany`、`@ManyToOne`和`@ManyToMany`注解来定义这些...
- Hibernate支持多种关系映射,本章将深入讲解一对一、一对多和多对一的关系配置,包括集合类型的选择(List, Set, Map等)和级联操作的设置。 4. **Chapter 9:多对多关系映射** - 多对多关系在数据库设计中常见...
在本项目中,"hibernate关联关系2"是一个关于使用Hibernate框架处理数据库关联关系的实战案例。Hibernate是一个流行的开源对象关系映射(ORM)工具,它允许开发人员使用Java对象来操作数据库,极大地简化了数据库...
描述提到“使用cascade和inverse优化区和街道关联关系”,这意味着我们将深入理解Hibernate的cascade和inverse属性,以及它们在双向一对多关联关系中的应用。 Hibernate是Java领域中广泛使用的对象关系映射(ORM)...
同时,书中涵盖了单向和双向一对多、一对一、多对多等各种关系映射的实现方法。 四、Hibernate查询语言(HQL) HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但更专注于对象。书中讲解了HQL的基本语法,包括...
在“Introduction to Hibernate”部分,文档引导开发者从零开始构建第一个Hibernate应用。这包括创建基本的实体类、定义映射文件、配置Hibernate环境、使用Ant进行构建等步骤。这一过程不仅涵盖了基础概念的介绍,还...
Hibernate支持一对一、一对多、多对一和多对多四种关联关系的映射,包括单向和双向关联,以及懒加载和立即加载策略。 十、性能优化 为了提高性能,可以采用批处理、延迟加载、缓存策略等手段。比如,使用BatchSize...
3. **实体关系**:分析源码中的单向、双向关联,一对多、一对一、多对多等关系映射的实现。 通过深入研究Hibernate5的源码,开发者可以更熟练地掌握ORM技巧,理解其内部机制,进而提高开发效率并解决实际问题。而...
6. 实战演练:通过一个实际案例,演示如何在项目中应用一对多双向关联和级联操作。 通过学习本教程,你将能够熟练掌握JPA中的一对多双向关联及级联操作,从而在开发中更加高效地管理数据库数据。
【标题】"Flex4.X+BlazeDS+Spring3实战开发在线书店四"涉及的核心技术栈是Adobe Flex 4.6、BlazeDS、Spring 3框架以及Java相关的JPA和Hibernate,配合MySQL数据库实现一个在线书店的完整系统。下面将详细阐述这些...
本压缩包“hibernate.rar”包含了关于Hibernate框架如何实现三种主要关联关系的源代码示例:一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)。这些示例都是在Eclipse和MyEclipse开发环境中编写的...
这包括实体类的属性、主键生成策略、关联关系(一对一、一对多、多对一、多对多)的配置。 4. **SessionFactory和Session**:解释SessionFactory和Session的角色和使用方法,它们是Hibernate的主要工作接口。...
而Hibernate则是JPA的一种实现,它提供了丰富的API和配置选项,进一步增强了对数据库操作的灵活性。 Hibernate作为ORM工具,可以帮助我们处理复杂的数据库事务、查询和实体关系映射。在本在线书店项目中,我们可能...
9. **关联映射**:覆盖一对一、一对多、多对一、多对多的各种关联映射方式,以及级联操作和反向映射。 10. **缓存机制**:介绍Hibernate的两级缓存(一级缓存Session,二级缓存如EHCache或Infinispan),以及缓存...