Hibernate(四)一对多映射 补充二:单向多对一关系(学生->班级)

数据库及其他文件见Hibernate(四)一对多映射 补充一:单向一对多关系(班级->学生)

package com.imooc.entity;

import java.io.Serializable;

public class Grade implements Serializable{
    /**
     * 班级
     */
    private static final long serialVersionUID = 1L;
    private int gid;
    private String gname;
    private String gdesc;

    public Grade() {
        super();
    }

    public Grade(String gname, String gdesc) {
        super();
        this.gname = gname;
        this.gdesc = gdesc;
    }



    public Grade(int gid, String gname, String gdesc) {
        super();
        this.gid = gid;
        this.gname = gname;
        this.gdesc = gdesc;
    }
    public int getGid() {
        return gid;
    }
    public void setGid(int gid) {
        this.gid = gid;
    }
    public String getGname() {
        return gname;
    }
    public void setGname(String gname) {
        this.gname = gname;
    }
    public String getGdesc() {
        return gdesc;
    }
    public void setGdesc(String gdesc) {
        this.gdesc = gdesc;
    }

}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="com.imooc.entity.Grade" table="grade" >
        <id name="gid" column="gid" type="java.lang.Integer">
            <generator class="increment"></generator><!--increment Hibernate自增  -->
        </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>

    </class>

</hibernate-mapping>
package com.imooc.entity;

/**
 * 学生
 * @author Administrator
 *
 */
public class Student {

    public Student(String sname, String sex) {
        super();
        this.sname = sname;
        this.sex = sex;
    }

    public Student() {
        super();
    }


    private int sid;
    private String sname;
    private String sex;
    private 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 Grade getGrade() {
        return grade;
    }

    public void setGrade(Grade grade) {
        this.grade = grade;
    }


}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="com.imooc.entity.Student" table="student" >
        <id name="sid" column="sid" type="java.lang.Integer">
            <generator class="increment"></generator><!--increment Hibernate自增  -->
        </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.entity;

import java.util.Set;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.imooc.util.HibernateUtil;

/**
 * 单向多对一关系(学生--》班级)
 * @author Administrator
 *
 */
public class Test {

    public static void main(String[] args) {
        add();
        //findStudentsByGrade();
        //update();
        //delete();
    }

    //将学生添加到班级
    public static void add(){
        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);
    }
}

/*console:执行结果 和一对多比少执行2条update语句
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 (?, ?, ?, ?)*/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值