Hibernate单向关联比较

来源:互联网 发布:会编程可以在家工作吗 编辑:程序博客网 时间:2024/05/23 10:44

1、多对一关联

场景:多个用户对应一个地址(在多的一方配置关联)

<?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 package="com.caokaiyuan.domain">
    <class name="User" table="tb_user">
    <!-- 配置主键映射 -->
    <id name="id" column="id">
    <generator class="increment"/>
    </id>
    <property name="username"/>
    <property name="password"/>
    <!-- 配置多对一映射 配置的信息有:关联的属性、类名,外键的名称 -->
    <many-to-one name="address" class="Address" column="address_id">
    </many-to-one>
    </class>
    </hibernate-mapping>


2、一对多关联

场景:一个地址对应多个街道(在一的一方配置关联)

<?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 package="com.caokaiyuan.domain">
    <class name="Address" table="address">
    <!-- 配置主键映射 -->
    <id name="addressId" column="address_id">
    <generator class="increment"/>
    </id>
    <!-- 配置属性映射 -->
    <property name="addressDetail"/>
   
    <!-- 配置一对多映射 cascade级联关系 -->
    <set name="street" cascade="all">

<!--  外键名称 -->
    <key column="address_id"/>

<!-- 配置一对多映射 -->
    <one-to-many class="Street"/>
    </set>
    </class>
    </hibernate-mapping>


3、一对一关联

场景:一条街道对应一个学校(在任意一方配置关联 这里在街道配置关联)

<?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 package="com.caokaiyuan.domain">
    <class name="Street" table="tb_street">
    <!-- 配置主键映射 -->
    <id name="streetId" column="street_id">

<!--  这里用外键(学校的主键)配置主键 -->
    <generator class="foreign">
    <param name="property">school</param>
    </generator>
    </id>
    <!-- 配置其他属性 -->
    <property name="streetName"/>
   
    <!-- 配置一对一映射 -->
    <one-to-one name="school"></one-to-one>
    </class>
    </hibernate-mapping>


总结:主要是配置关联关系时的区别,A对B关联,在A的一方配置关联,一对多,多对一,一对一的关联区别看上面的配置文件

0 0