国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java框架篇---hibernate(一對多)映射關系

2019-11-14 23:46:29
字體:
來源:轉載
供稿:網友
java框架篇---hibernate(一對多)映射關系

一對多關系可以分為單向和雙向。

一對多關系單向

單向就是只能從一方找到另一方,通常是從主控類找到擁有外鍵的類(表)。比如一個母親可以有多個孩子,并且孩子有母親的主鍵作為外鍵。母親與孩子的關系就是一對多的關系。如果想對母親信息的操作同時也反應在其孩子信息上那么可以在母親類配置文件的集合屬性上配置cascade="all",表示對關聯實體進行級聯更新配置。

“主”端: 多的一端

<?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"><hibernate-mapping package="com.java1234.model">    <class name="Student" table="t_student">        <id name="id" column="stuId">            <generator class="native"></generator>        </id>        <!-- 多的一端// column 數據中的別名 cascade 表示級聯關系 通常用在多對一 ,和多對多的映射中   -->        <PRoperty name="name"></property>        <many-to-one name="c" class="com.java1234.model.Clazz" column="ClazzId"></many-to-one>    </class></hibernate-mapping>

一的一端:

<?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"><hibernate-mapping package="com.java1234.model">    <class name="Clazz" table="t_clazz">        <id name="id" >            <generator class="native"></generator>        </id>                <property name="name" column="clazzName"></property>    </class></hibernate-mapping>

一對多單向映射:多對一的映射關系是在多的一端進行維護的,一對多關系映射則由一端來維護這種關系。

“主”端:一的一端來維護這種關系 ,用set標簽 在t_student的表中添加字段ClazzId來進行關聯。

一對多關聯映射利用了多對一關聯映射原理:

多對一關聯映射:在多的一端加入外鍵指向一的一端,他維護的關系是多指向一

一對多關聯映射: 在多的一端加入外鍵指向一的一端,它維護的關系是一指向多

也就是說一對多和多對一的映射策略是一樣的,只是站的角度不同。

在一的一端維護的關系的缺點: 如果經t_student 表里面的clazzId 字段設為非空,則無法保存。

一對多雙向

一對多雙向。在雙向關聯時每個Student都有一個clazz的引用,所以在配置clazz.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"><hibernate-mapping package="com.java1234.model">    <class name="Clazz" table="t_clazz">        <id name="id" column="clazzId">            <generator class="native"></generator>        </id>        <property name="name" column="className"></property>        <set name="students" cascade="all" inverse="true">            <!-- cascade 有五個選項 分別是:all ,delete ,none,save-update,delete-orphan ;                 all : 所有情況下均進行關聯操作。                 none:所有情況下均不進行關聯操作。這是默認值。                  save-update:在執行save/update/saveOrUpdate時進行關聯操作。                 delete:在執行delete時進行關聯操作。                 delete-orphan: 當save/update/saveOrUpdate時,相當于save-update                 ;當刪除操作時,相當于delete ; -->            <key column="clazzId"></key>            <one-to-many class="com.java1234.model.Student" />        </set>    </class></hibernate-mapping>

在一一端的集合上使用<set>,在對方表中加入一個外鍵指向一一端。

在多的一端要采用<many-to-one>標簽


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 壤塘县| 安阳市| 耿马| 鲁甸县| 清涧县| 涡阳县| 合山市| 西华县| 汽车| 无棣县| 潜江市| 怀集县| 沧州市| 荣昌县| 诏安县| 阳泉市| 富宁县| 宁远县| 大丰市| 朔州市| 大姚县| 运城市| 嵩明县| 莎车县| 门源| 清水河县| 岳阳市| 通许县| 象州县| 鹰潭市| 敖汉旗| 交城县| 江达县| 睢宁县| 奇台县| 凤城市| 西乌珠穆沁旗| 江阴市| 柘城县| 咸阳市| 武山县|