zoukankan      html  css  js  c++  java
  • hibernate之 many to one /one to many

    一个classroom 对应多个学生.这个是one to many

    多个学生对应一个classroom 这个是many to one

    表classroom

    | classroom | CREATE TABLE `classroom` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

    表 student

    | student | CREATE TABLE `student` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      `classroom` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `FK_ID` (`classroom`),
      CONSTRAINT `FK_ID` FOREIGN KEY (`classroom`) REFERENCES `classroom` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

    classroom 的主键是student 的外键.

    用hibernate 自动生成如下的类和hbm.xml 映射文件

    classroom.java

    package com.skyline.test;
    // Generated 2015-10-15 15:15:05 by Hibernate Tools 4.3.1
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Classroom generated by hbm2java
     */
    public class Classroom implements java.io.Serializable {
    
        private Integer id;
        private String name;
        private Set students = new HashSet(0); //表中没有
    
       ......getter/setter
    }

    student.java

    package com.skyline.sms.caster.test;
    // Generated 2015-10-15 15:15:05 by Hibernate Tools 4.3.1
    
    /**
     * Student generated by hbm2java
     */
    public class Student implements java.io.Serializable {
    
        private Integer id;
        private Classroom classroom;
        private String name;
    
    ............getter/setter
    
    }

    classroom.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <!-- Generated 2015-10-15 15:15:06 by Hibernate Tools 4.3.1 -->
    <hibernate-mapping>
        <class name="Classroom" table="classroom" catalog="smsdb" optimistic-lock="version">
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="identity" />
            </id>
            <property name="name" type="string">
                <column name="name" length="20" />
            </property>
            <set name="students" table="student" inverse="true" lazy="true" fetch="select">
                <key>  <!--key 表示在student 表有如下外键-->
                    <column name="classroom" />
                </key>
                <one-to-many class="Student" />
            </set>
        </class>
    </hibernate-mapping>

    student.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <!-- Generated 2015-10-15 15:15:06 by Hibernate Tools 4.3.1 -->
    <hibernate-mapping>
        <class name="Student" table="student" catalog="smsdb" optimistic-lock="version">
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="identity" />
            </id>
             <property name="name" type="string">
                <column name="name" length="20" />
            </property>
            <many-to-one name="classroom" class="Classroom" fetch="select">
                <column name="classroom" />
            </many-to-one>
        </class>
    </hibernate-mapping>
  • 相关阅读:
    45 岁,还写代码吗?
    给你 8 个接私活的网站
    一文回顾 Java 入门知识(下)
    5 种前途迷茫的编程语言
    JVM 内存的结构模型、堆与堆栈原理、对象在内存中的结构
    mysql 索引是否能提高UPDATE,DELETE,INSERT 处理速度
    【诈尸】【游戏】多人联机游戏推荐
    250.统计同值子树
    366. 寻找二叉树的叶子节点
    156.上下翻转二叉树
  • 原文地址:https://www.cnblogs.com/predisw/p/4882562.html
Copyright © 2011-2022 走看看