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

Hibernate单向多对一实战

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


 
 
二 实现方式
多对一的关系和关系数据库中的外键参照关系最匹配,即在多方的表中的一个外键参照一方表的主键。
通过在多方持有一方的引用实现,需要在“多”的一端使用<many-to-one>配置。
 
三 单向多对一的配置
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;
        }
 
}
 
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 (?, ?, ?, ?)


 
  • 大小: 376.7 KB
  • 大小: 18.7 KB
1
1
分享到:
评论

相关推荐

    Hibernate4实战

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

    hibernate关联关系2

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

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

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

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

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

    hibernate5jar包以及源码

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

    Hibernate Reference

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

    hibernate参考手册

    6. **关联映射**:涵盖了单向、双向、一对多、多对一、一对一等多种关联关系的配置和使用。 7. **缓存机制**:介绍了第一级缓存和第二级缓存的概念,以及如何利用缓存提高性能。 8. **性能优化**:提供了优化...

    hibernate01:概念、正向工程、反向工程

    - **更新数据库**:Hibernate还提供了对现有数据库进行同步的功能,当实体类发生变化时,可以根据新的实体类自动更新数据库结构。 **4. 实战应用** 在实际项目中,开发者通常先设计好对象模型,然后通过反向工程...

    MyBatis深入

    - **关系映射**:MyBatis支持处理复杂的关系,例如一对一、一对多等关系的映射。 - **懒加载**:在查询时,默认情况下只加载直接关联的数据,而关联对象的数据会在真正需要时才加载,这种机制称为懒加载。 #### 8. ...

    软件开发课程设计.docx

    《软件开发课程设计》文档涵盖了多个软件开发的关键领域,包括JavaScript、Java、JDBC、Servlet、MVC设计模式、Hibernate、Spring以及Ajax等技术。以下是这些知识点的详细说明: 1. **JavaScript基础**:JavaScript...

    毕业设计-学生作业管理系统.zip

    【标题】:学生作业管理系统 这个“学生作业管理系统”是一个典型的IT项目,旨在提供一个平台,方便教师管理和学生提交、...对于开发者而言,这是一个宝贵的实战经验,对于学习者来说,是理论与实践相结合的良好机会。

    毕业设计:基于Springboot+vue的校园社团管理系统的设计与实现.zip

    此项目不仅涉及技术的综合运用,还涉及到项目管理和团队协作,对毕业生来说,是一个提升实战技能和理解软件工程全貌的好机会。通过这个系统,可以学习到Spring Boot的微服务架构、Vue.js的前端开发实践,以及数据库...

    P1-web2:web2入门手册

    Web2,相对于Web1.0的单向信息传递,强调的是互动性和用户参与度,它是互联网发展的一个重要阶段,带来了丰富的社交媒体、在线协作工具以及更加动态的网页体验。在本手册中,我们将深入探讨使用Java开发Web2应用程序...

Global site tag (gtag.js) - Google Analytics