zoukankan      html  css  js  c++  java
  • Hibernate常见操作二

    接上篇.

    One to many(many to One):

    1.many to one:

     Department:

    package com.wsy.domain;
    
    import java.io.Serializable;
    import java.util.Set;
    
    public class Department implements Serializable{
    
        private static final long serialVersionUID = 1L;
        private Integer id;
        private String name;
        private Set<Student> stud;
        public Set<Student> getStud() {
            return stud;
        }
        public void setStud(Set<Student> stud) {
            this.stud = stud;
        }
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

    Student:

    package com.wsy.domain;
    
    import java.io.Serializable;
    
    public class Student implements Serializable{
    
        private static final long serialVersionUID = 1L;
        private Integer id;
        private String name;
        private Department dept;
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Department getDept() {
            return dept;
        }
        public void setDept(Department dept) {
            this.dept = dept;
        }
    }

    Department.hbm.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping package="com.wsy.domain">
    <class name="Department" table="department">
    <id name="id" column="id" type="java.lang.Integer">
    <generator class="increment"></generator>
    </id>
    <property name="name" type="java.lang.String">
    <column name="name" length="64" not-null="true"></column>
    </property>
    <!-- stud为Department成员名 -->
    <set name="stud" cascade="save-update"> <!-- 设置one to many,pojo表属性添加Set成员(并非HashSet,由hibernate重写)-->
    <key column="dept_id"></key><!-- 此处column 和Student外键名,保持一致 -->
    <one-to-many class="Student"/>
    </set>
    </class>
    </hibernate-mapping>

    Student.hbm.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping package="com.wsy.domain">
        <class name="Student" table="student">
            <id name="id" column="id" type="java.lang.Integer">
                <generator class="increment"></generator>
            </id>
            <property name="name" type="java.lang.String">
                <column name="name" not-null="false"></column>
            </property>
            <!-- 设置many to one,dept为Student成员名,dept_id为外键属性 -->
            <many-to-one name="dept" column="dept_id"></many-to-one>
        </class>
    </hibernate-mapping>

    测试程序:

    如果没有设置级联操作,则通过many to one 一侧添加数据,session会话保存两侧.

    如果在one to many侧设置级联操作,则通过one to many侧添加数据,session会话保存one to many侧.

    级联设置在one to many侧,cascade="delete" or cascade="save-update".


    many to many:

    many to many 通常需要建立第三张表,将many to many 简化成两个one to many && many to one.

    POJO:

    Course:(one to many)

    package com.wsy.domain;
    
    import java.io.Serializable;
    import java.util.HashSet;
    import java.util.Set;
    
    public class Course implements Serializable{
    
        private static final long serialVersionUID = 1L;
        private Integer cid;
        private String cname;
        private Integer ccredit;
        private Set stucourses = new HashSet(0);
        public Integer getCid() {
            return cid;
        }
        public void setCid(Integer cid) {
            this.cid = cid;
        }
        public String getCname() {
            return cname;
        }
        public void setCname(String cname) {
            this.cname = cname;
        }
        public Integer getCcredit() {
            return ccredit;
        }
        public void setCcredit(Integer ccredit) {
            this.ccredit = ccredit;
        }
        public Set getStucourses() {
            return stucourses;
        }
        public void setStucourses(Set stucourses) {
            this.stucourses = stucourses;
        }
    }

    Student:(one to many)

    package com.wsy.domain;
    
    import java.io.Serializable;
    import java.util.HashSet;
    import java.util.Set;
    
    public class Student implements Serializable{
    
        private static final long serialVersionUID = 1L;
        private Integer sid;
        private String sname;
        private String ssex;
        private String sdept;
        private Integer sage;
        private String saddress;
        private Set stucourses = new HashSet(0);
        public Integer getSid() {
            return sid;
        }
        public void setSid(Integer sid) {
            this.sid = sid;
        }
        public String getSname() {
            return sname;
        }
        public void setSname(String sname) {
            this.sname = sname;
        }
        public String getSsex() {
            return ssex;
        }
        public void setSsex(String ssex) {
            this.ssex = ssex;
        }
        public String getSdept() {
            return sdept;
        }
        public void setSdept(String sdept) {
            this.sdept = sdept;
        }
        public Integer getSage() {
            return sage;
        }
        public void setSage(Integer sage) {
            this.sage = sage;
        }
        public String getSaddress() {
            return saddress;
        }
        public void setSaddress(String saddress) {
            this.saddress = saddress;
        }
        public Set getStucourses() {
            return stucourses;
        }
        public void setStucourses(Set stucourses) {
            this.stucourses = stucourses;
        }
    
    }

    Stucourse:(many to one)

    package com.wsy.domain;
    
    import java.io.Serializable;
    
    public class Stucourse implements Serializable{
        private static final long serialVersionUID = 1L;
        private Integer stuCoureseId;
        private Student student;
        private Course course;
        private Integer grade;
        public Integer getStuCoureseId() {
            return stuCoureseId;
        }
        public void setStuCoureseId(Integer stuCoureseId) {
            this.stuCoureseId = stuCoureseId;
        }
        public Student getStudent() {
            return student;
        }
        public void setStudent(Student student) {
            this.student = student;
        }
        public Course getCourse() {
            return course;
        }
        public void setCourse(Course course) {
            this.course = course;
        }
        public Integer getGrade() {
            return grade;
        }
        public void setGrade(Integer grade) {
            this.grade = grade;
        }
    }

    Student.hbm.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.wsy.domain">
    <class name="Student" table="student">
    <id name="sid" column="sid" type="java.lang.Integer">
    <generator class="assigned"></generator>
    </id>
    <property name="sname" type="java.lang.String">
                <column name="sname" length="15" not-null="true" />
            </property>
            <property name="ssex" type="java.lang.String">
                <column name="ssex" length="2" not-null="false" />
            </property>
            <property name="sdept" type="java.lang.String">
                <column name="sdept" length="10" not-null="false" />
            </property>
            <property name="sage" type="java.lang.Integer">
                <column name="sage" not-null="false"/>
            </property>
            <property name="saddress" type="java.lang.String">
                <column name="saddress" length="45" not-null="false"/>
            </property>
            <set name="stucourses" inverse="true">
                <key>
                    <column name="sid" />
                </key>
                <one-to-many class="Stucourse" />
            </set>
    </class>
    </hibernate-mapping>

    Course.hbm.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.wsy.domain">
    <class name="Course" table="course">
    <id name="cid" type="java.lang.Integer">
    <generator class="assigned"></generator>
    </id>
    <property name="cname" type="java.lang.String">
    <column name="cname"></column>
    </property>
    <property name="ccredit" type="java.lang.Integer">
    <column name="ccredit" not-null="false"/>
    </property>
    <set name="stucourses">
    <key>
    <column name="cid" />
    </key>
    <one-to-many class="Stucourse" />
    </set>
    </class>
    </hibernate-mapping>

    Stucourse.hbm.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.wsy.domain">
    <class name="Stucourse" table="stucourse">
    <id name="stuCoureseId" type="java.lang.Integer">
    <generator class="increment"></generator>
    </id>
    <property name="grade" type="java.lang.Integer">
    <column name="grade" not-null="false"></column>
    </property>
    <many-to-one name="course" column="cid"></many-to-one>
    <many-to-one name="student" column="sid"></many-to-one>
    </class>
    </hibernate-mapping>


    以上代码经测试可以运行.

  • 相关阅读:
    【★】Web精彩实战之
    【★】Web精彩实战之
    Color.js增强你对颜色的控制
    JS查错小工具-三生有幸【推荐】
    JS查错小工具-三生有幸【推荐】
    人工智能成功识别“色情暴力”信息????
    新浪博客“网络繁忙请稍后再试”
    《OD大数据实战》Sqoop入门实例
    《OD大数据实战》驴妈妈旅游网大型离线数据电商分析平台
    《OD大数据实战》HBase入门实战
  • 原文地址:https://www.cnblogs.com/Maskisland/p/6034131.html
Copyright © 2011-2022 走看看