Hibernate单向关联比较
2016-04-10 21:17
411 查看
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的一方配置关联,一对多,多对一,一对一的关联区别看上面的配置文件
场景:多个用户对应一个地址(在多的一方配置关联)
<?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的一方配置关联,一对多,多对一,一对一的关联区别看上面的配置文件
相关文章推荐
- 一道关于数据库(经典父子级 ID 关联)更新题
- C#中枚举类型和radiobox关联操作的方法
- PHP关联数组的10个操作技巧
- PHP实现更新中间关联表数据的两种方法
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- Struts2+Hibernate实现数据分页的方法
- Hibernate环境搭建与配置方法(Hello world配置文件版)
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- 详解Java的Hibernate框架中的注解与缓存
- 浅析Java的Hibernate框架中的继承关系设计
- MyBatis学习笔记(二)之关联关系