`
cakin24
  • 浏览: 1388916 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Hibernate双向多对一实战

阅读更多
一 双向多对一生活举例


 
 
二 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语句。

 



 
  • 大小: 397.5 KB
  • 大小: 19.5 KB
1
1
分享到:
评论

相关推荐

    hibernate一对多,多对一,一对多双向关联

    本篇文章将深入探讨"一对多"、"多对一"以及"一对多双向关联"的概念,并结合实际例子进行详细讲解。 首先,我们来看"一对多"(One-to-Many)关系。在现实生活中,一个学生可以对应多个课程,这就是典型的"一对多...

    Hibernate 一对多双向映射及乐观锁使用

    **标题解析:** "Hibernate 一对多双向映射及乐观锁使用" 在Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,能够帮助开发者将数据库操作转化为面向对象的编程,简化了数据访问层的实现。"一对多"是...

    hibernate多对多

    **标题:“Hibernate多对多映射实战”** 在Java领域,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本示例主要聚焦于使用Hibernate处理数据库中的多对多关系,这是一种复杂但常见的关联类型。在关系...

    Hibernate实战(第2版 中文高清版)

     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实战

    《Hibernate4实战》详细介绍了单向和双向的一对一、一对多、多对一和多对多关系的映射方式。通过具体示例,读者可以了解如何在实体类中使用`@OneToOne`、`@OneToMany`、`@ManyToOne`和`@ManyToMany`注解来定义这些...

    孙卫琴精通hibernate part2

    - Hibernate支持多种关系映射,本章将深入讲解一对一、一对多和多对一的关系配置,包括集合类型的选择(List, Set, Map等)和级联操作的设置。 4. **Chapter 9:多对多关系映射** - 多对多关系在数据库设计中常见...

    hibernate关联关系2

    在本项目中,"hibernate关联关系2"是一个关于使用Hibernate框架处理数据库关联关系的实战案例。Hibernate是一个流行的开源对象关系映射(ORM)工具,它允许开发人员使用Java对象来操作数据库,极大地简化了数据库...

    Hibernate开发租房系统2 源码

    描述提到“使用cascade和inverse优化区和街道关联关系”,这意味着我们将深入理解Hibernate的cascade和inverse属性,以及它们在双向一对多关联关系中的应用。 Hibernate是Java领域中广泛使用的对象关系映射(ORM)...

    《精通Hibernate》电子版(孙卫琴)

    同时,书中涵盖了单向和双向一对多、一对一、多对多等各种关系映射的实现方法。 四、Hibernate查询语言(HQL) HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但更专注于对象。书中讲解了HQL的基本语法,包括...

    Hibernate Reference

    在“Introduction to Hibernate”部分,文档引导开发者从零开始构建第一个Hibernate应用。这包括创建基本的实体类、定义映射文件、配置Hibernate环境、使用Ant进行构建等步骤。这一过程不仅涵盖了基础概念的介绍,还...

    韩顺平老师Hibernate教程PPT(完整)

    Hibernate支持一对一、一对多、多对一和多对多四种关联关系的映射,包括单向和双向关联,以及懒加载和立即加载策略。 十、性能优化 为了提高性能,可以采用批处理、延迟加载、缓存策略等手段。比如,使用BatchSize...

    hibernate5jar包以及源码

    3. **实体关系**:分析源码中的单向、双向关联,一对多、一对一、多对多等关系映射的实现。 通过深入研究Hibernate5的源码,开发者可以更熟练地掌握ORM技巧,理解其内部机制,进而提高开发效率并解决实际问题。而...

    10_传智播客JPA详解_JPA中的一对多双向关联与级联操作

    6. 实战演练:通过一个实际案例,演示如何在项目中应用一对多双向关联和级联操作。 通过学习本教程,你将能够熟练掌握JPA中的一对多双向关联及级联操作,从而在开发中更加高效地管理数据库数据。

    Flex4.X+BlazeDS+Spring3L实战开发在线书店四

    【标题】"Flex4.X+BlazeDS+Spring3实战开发在线书店四"涉及的核心技术栈是Adobe Flex 4.6、BlazeDS、Spring 3框架以及Java相关的JPA和Hibernate,配合MySQL数据库实现一个在线书店的完整系统。下面将详细阐述这些...

    hibernate.rar

    本压缩包“hibernate.rar”包含了关于Hibernate框架如何实现三种主要关联关系的源代码示例:一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)。这些示例都是在Eclipse和MyEclipse开发环境中编写的...

    Hibernate开发指南01

    这包括实体类的属性、主键生成策略、关联关系(一对一、一对多、多对一、多对多)的配置。 4. **SessionFactory和Session**:解释SessionFactory和Session的角色和使用方法,它们是Hibernate的主要工作接口。...

    Flex4.X+BlazeDS+Spring3L实战开发在线书店二

    而Hibernate则是JPA的一种实现,它提供了丰富的API和配置选项,进一步增强了对数据库操作的灵活性。 Hibernate作为ORM工具,可以帮助我们处理复杂的数据库事务、查询和实体关系映射。在本在线书店项目中,我们可能...

    Hibernate开发指南.pdf

    9. **关联映射**:覆盖一对一、一对多、多对一、多对多的各种关联映射方式,以及级联操作和反向映射。 10. **缓存机制**:介绍Hibernate的两级缓存(一级缓存Session,二级缓存如EHCache或Infinispan),以及缓存...

Global site tag (gtag.js) - Google Analytics