Hibernate一对多关系映射

第十三章Hibernate一对多关系映射

一对多是在项目开发之中最为常见的一个功能,也就是指在所有的映射里面,一对多设计是首先要思考。例如:现在管理员可以进行新闻的发布,那么一个管理员可以发布多条新闻,这就是一个典型的一对多关系。

范例:数据库创建脚本

-- 使用数据库

USE mldn ;

-- 删除数据表

DROP TABLE news ;

DROP TABLE admin ;

-- 创建数据表

CREATE TABLE admin(

       adminid                        VARCHAR(30) ,

       password               VARCHAR(32) ,

       CONSTRAINT pk_adminid PRIMARY KEY(adminid)

) ;

CREATE TABLE news(

       nid                               INT                AUTO_INCREMENT ,

       title                       VARCHAR(30) ,

       pubdate                        TIMESTAMP ,

       content                         TEXT ,

       adminid                        VARCHAR(30) ,

       CONSTRAINT pk_nid PRIMARY KEY(nid) ,

       CONSTRAINT fk_adminid FOREIGN KEY(adminid) REFERENCES admin(adminid) ON DELETE CASCADE

) ;

在这样的关系之中,取得管理员的时候应该可以取得相应的新闻,也有可能不取得新闻。

13.1、基于*.hbm.xml文件的配置

为项目添加Hibernate支持同时选择好两张数据表并且生成映射。

范例:观察Admin.java类

package cn.cgj.pojo;

import java.util.HashSet;

import java.util.Set;

@SuppressWarnings("serial")

public class Admin implements java.io.Serializable {

    private String adminid;

    private String password;

    @SuppressWarnings("rawtypes")

    private Set newses = new HashSet(0);

    public Admin() {

    }

    //settergetter

}

      这种设计是一种最为明显的设计,一个管理员可以发布多条新闻,而所条新闻就使用set集合表示。

范例:观察News.java类

package cn.cgj.pojo;

import java.sql.Timestamp;

@SuppressWarnings("serial")

public class News implements java.io.Serializable {

   private Integer nid;

   private Admin admin;

   private String title;

   private Timestamp pubdate;

   private String content;

   public News() {

   }

   //settergetter

}

      这种设计在之前的JDBC实现DAO的过程中都有所讲解。POJO类的设计完成之后,下面关键的地方在于配置文件上。

范例:观察admin.hbm.xml文件

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="cn.cgj.pojo.Admin" table="admin" catalog="mldn">

        <id name="adminid" type="java.lang.String">

            <column name="adminid" length="30" />

            <generator class="assigned"></generator>

        </id>

        <property name="password" type="java.lang.String">

            <column name="password" length="32" />

        </property>

        <!-- 此处定义的集合,表示一对多的关系映射,此处的Admin中的adminid的信息由news维护 -->

        <set name="newses" inverse="true">

            <key> <!-- 两张表之间关联的操作列 -->

                <column name="adminid" length="30" />

            </key>    <!-- 在一对多的关系里面,多的一方对应的类型 -->

            <one-to-many class="cn.cgj.pojo.News" />

        </set>

    </class>

</hibernate-mapping>

范例:观察News.hbm.xml文件

<?xml version="1.0" encoding="utf-8"?>

<!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值