这是我

1 单向一对多:

实体类:(课程类)Grade与(学生类)Student的一对多关系

学生类:

public class Student implements java.io.Serializable {
// Fields
private Long id;
private String name;
private Integer age;
private Long gradeId;
//省略set、get方法
}

bhm.xml:

<hibernate-mapping>
<class name="com.zx.model.Student" table="student" catalog="hibernate">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="50" />
</property>
<property name="age" type="java.lang.Integer">
<column name="age" />
</property>
<property name="gradeId" type="java.lang.Long">
<column name="grade_id" />
</property>
</class>
</hibernate-mapping>

课程类:

public class Grade implements java.io.Serializable {
// Fields
private Long id;
private String name;
}

xml

<hibernate-mapping>
<class name="com.zx.model.Grade" table="grade" catalog="hibernate">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="50" />
</property> <!-- 配置与student一对多的关系-->
<set name="students" inverse="true" cascade="delete">
<key column="grade_id" />
<one-to-many class="com.zx.model.Student"/>
</set>
</class>
</hibernate-mapping>

测试findById():

    public static void main(String[] args) {
GradeDAO gradeDAO = new GradeDAO();
Grade grade = new Grade();
grade.setId(1L);
Grade grade2 = gradeDAO.findById(1L);
for (Student stu : grade2.getStudents()) {
log.debug(stu.getName());
}
}

关联查询不管inverse、cascade为何值时,都会查询到课程对应得学生集合。插入时只插入一张表,不会级联。

2 双向关联映射

在两个关联实体中,同时配置了两种关联关系,这是这两个实体间就形成了双向关联映射,查询数据时互不影响,但是插入、更新、删除数据就会产生级联更新的问题。一班来说关系的维护交给多的一方维护,那么就需要在“一”的一方的配置文件中,加入invers=”true”的设置。

Student:

   <hibernate-mapping>
<class name="com.zx.model.Student" table="student" catalog="hibernate">
....
<!--
<property name="gradeId" type="java.lang.Long">
<column name="grade_id" />
</property> --> <!-- 配置双向关联 -->
<many-to-one name="grade">
<column name="grade_id"></column>
</many-to-one>
</class>
</hibernate-mapping>

Grade:

<hibernate-mapping>
<class name="com.zx.model.Grade" table="grade" catalog="hibernate">
... <!-- 配置与student一对多的关系, **维护关系交给多的一方维护** -->
<set name="students" inverse="true" cascade="all">
<key column="grade_id" />
<one-to-many class="com.zx.model.Student"/>
</set>
</class>
</hibernate-mapping>

Hibernate的关联映射--一对多、的更多相关文章

  1. Hibernate之关联映射(一对多和多对一映射,多对多映射)

    ~~~接着之前的Hibernate框架接着学习(上篇面试过后发现真的需要学习以下框架了,不然又被忽悠让去培训.)~~~ 1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1: ...

  2. (转)Hibernate关联映射——一对多(多对一)

    http://blog.csdn.net/yerenyuan_pku/article/details/70152173 Hibernate关联映射——一对多(多对一) 我们以客户(Customer)与 ...

  3. Hibernate注解----关联映射注解以及课程总结详解----图片版本

    上一篇,记录了Hibernate注解----类级别注解以及属性注解详解 ,我们这一节主要讲解的是Hibernate注解----关联映射注解以及课程总结详解. 本节的主要内容: 第3章 关联映射注解 3 ...

  4. 初识Hibernate之关联映射(二)

    上篇我们介绍了关联映射的几种形式,有单向多对一,单向一对多,还有双向一对多.本篇接着介绍有关关联映射的其他几种映射方式,主要有以下几种: 基于外键的单向一对一关联映射 基于主键的单向一对一关联映射 单 ...

  5. Hibernate之关联关系映射(一对多和多对一映射,多对多映射)

    ~~~接着之前的Hibernate框架接着学习(上篇面试过后发现真的需要学习一下框架了,不然又被忽悠让去培训.)~~~ 1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1: ...

  6. Hibernate的关联映射——双向1-N关联

    Hibernate的关联映射--双向1-N关联 对于1-N的关联,Hibernate推荐使用双向关联,而且不要让1的一端控制关联关系,而是用N的一端控制关联关系.双线的1-N关联和N-1关联是两种相同 ...

  7. Hibernate的关联映射——单向1-N关联

    Hibernate的关联映射--单向1-N关联 单向1-N关联的持久化类里需要使用集合属性.因为1的一端需要访问N的一端,而N的一端将以集合(Set)形式表现.从这个意义上来看,1-N(实际上还包括N ...

  8. Hibernate的关联映射——单向1-1关联

    Hibernate的关联映射--单向1-1关联 对于单向的1-1关联关系,需要在持久化类里增加代表关联实体的成员变量,并为该成员变量添加setter方法和getter方法.从持久化类的代码上看,单向1 ...

  9. Hibernate的关联映射——单向N-1关联

    Hibernate的关联映射--单向N-1关联 N-1是非常常见的关联关系,最常见的父子关系也是N-1关联,单向的N-1关联只需从N的一端可以访问1的一端. 为了让两个持久化类能够支持这种关联映射,程 ...

随机推荐

  1. Debian 环境安装新版 nginx

    在 Debian 系统中,我们可以通过 apt-get 安装系统自带的 nginx,这样安装的 nginx 版本略旧.Nginx 官网提供了一些编辑绎好的 deb 安装包,我们只需更新安装源,就可以通 ...

  2. Spring不能直接@autowired注入Static变量

    一.业务场景 spring框架应用中有些静态方法需要依赖被容器管理的类,就像这样: @Component public class Test { @Autowired private static U ...

  3. encode_chunked=req.has_header('Transfer-encoding'))问题解决方法

    Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.6/lib/ ...

  4. Spring Cloud-Eureka 服务注册中心

    Eureka 是 Netflix 开发的,一个基于 REST 服务的,服务注册与发现的组件 它主要包括两个组件:Eureka Server 和 Eureka Client Eureka Client: ...

  5. 【C++】C++中的异常解析

    异常是程序在执行期间产生的问题.C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作. 异常提供了一种转移程序控制权的方式.C++ 异常处理涉及到三个关键字:try.catch.throw ...

  6. RocketMQ、Kafka、RabbitMQ的对比

    RocketMQ 相比于 RabbitMQ.Kafka 具有主要优势特性有: 支持事务型消息(消息发送和DB操作保持两方的最终一致性,RabbitMQ 和Kafka 不支持) 支持结合 RocketM ...

  7. matlab学习笔记11_3高维数组操作 filp, shiftdim, size, permute, ipermute

    一起来学matlab-matlab学习笔记11 11_3 高维数组处理和运算 filp, shiftdim, size, permute, ipermute 觉得有用的话,欢迎一起讨论相互学习~Fol ...

  8. 配置Pods和containers--为Containers和Pods分配CPU资源

    指定CPU请求和CPU限制 要为容器指定CPU请求,在容器资源清单中使用resources:requests字段.要指定CPU限制,使用resources:limits. cpu-request-li ...

  9. echo的色彩处理

    在Shell脚本中,可以使用echo的-e选项使显示内容呈现出不同的颜色. 格式1:echo -e "\033[背景颜色代码;文字颜色代码m 输出的字符串 \033[0m" 格式2 ...

  10. (转载)基于比较的少样本(one/few-shoting)分类

    基于比较的方法 先通过CNN得到目标特征,然后与参考目标的特征进行比较. 不同在于比较的方法不同而已. 基本概念 数据集Omniglot:50种alphabets(文字或者文明); alphabet中 ...