Hibernate Annotation关系映射, 级联cascade属性

Hibernate Annotation关系映射, 级联cascade属性
一。 Hibernate Annotation关系映射

1、一对一外键关联映射(单向)

2、一对一外键关联映射(双向)

3、一对一主键关联映射(不重要)在这不演示

在实际中很少用,使用注解@PrimaryKeyJoinColumn

意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用

注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML

映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。

因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了

4、多对一关联映射

5、一对多关联映射(单向)

6、一对多关联映射(双向)

7、多对多关联映射(单向)

8、多对多关联映射(双向)

二。其他配置

级联(cascade)属性
1、CascadeType.ALL(包括增、删、改、查,联动操作),其实查不算在内,查Fetch

2、CascadeType.MERGE(合并的join)--不重要

3、CascadeType.PERSIST(保存的时候在级联)

4、CascadeType.REFRESH(刷新说明:比如现在我查询出了数据,另外一个人在我查询数据之后,他对数据做了修改,这是才会级联上,hibernate会自动刷新我查询出来的数据)

5、CascadeType.REMOVE (只要在删除操作时才会级联)

6、我们一般都只设置CascadeType.ALL就OK了,

7、Cascade不是必须的,他的作用只是可以让我们快速的开发,我们也可以通过手动增、删、改、查

Fetch捉取策略
1、FetchType.EAGER(渴望的,希望马上得到)

a) 一对多关系,比如通过get()方法来get出一的一端,他之后会出一条SQL语句,不会自动去查询多的一端,如果设置FetchType.EAGER,会讲他的关联对象查询出来

b) 如果是load的话,他不会发出SQL语句,因为load支持延迟加载,只有真正获取数据时才会发SQL

2、FetchType.LAZY(懒加载)

a) 只有真正获取数据时才发出SQL语句

3、默认是:FetchType.LAZY(一对多)

4、默认是:FetchType.EAGER(多对一)

5、一般使用默认就可以了

时间: 2024-10-17 02:29:58

Hibernate Annotation关系映射, 级联cascade属性的相关文章

hibernate 实体关系映射笔记

@常用属性说明: @Entity:实体类 @Table:指定对应数据表 @Id:主键,使用可以为null值的类型,如果实体类没有保存到数据库是一个临时状态 @Column:配置普通属性,除了主键外,java基本类型的属性 @Base:普通属性的加载方式 @GeneratedValue:主键生成策略 @Temporal:日期类型(DATE,TIME还是TIMESTAMP),如果属性类型是java.util.Date(是以上3个类的父类)类型时才需要使用该@声明具体的日期类型 @Transient:

hibernate 对象关系映射文件详解

POJO 类和数据库的映射文件*.hbm.xml POJO类和关系数据库之间的映射可以用一个XML文档来定义. 映射文件的扩展名为.hbm.xml 在运行时Hibernate将根据这个映射文件来生成各种SQL语句 通过POJO类的数据库映射文件,Hibernate可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据库表列之间的对应关系 映射文件说明 hibernate-mapping 类层次:class 主键:id 基本类型:property 实体引用类: many-to-one

hibernate继承关系映射和java反射机制的运用

转:http://blog.csdn.net/derpvailzhangfan/article/details/1957946 ,感谢博主分享 Notes:hibernate元数据的运用:uuid的概念:java的反射机制,“因为抽象类无法new出对象来,所以就要用java反射机制”,“TcommTable tomm = (TcommTable) Class.forName(allName).newInstance();”: hibernate继承关系映射大概有5种,这5种继承关系映射里面,我觉

EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public?

前言 不知我们是否思考过一个问题,在关系映射中对于导航属性的访问修饰符是否一定必须为public呢?如果从未想过这个问题,那么我们接下来来探讨这个问题. EF 6.x和EF Core 何种情况下必须配置映射关系? 在EF 6.x中我们创建如下示例类. public partial class Customer { public int Id { get; set; } public string Name { get; set; } public string Email { get; set;

Hibernate框架关系映射

接触Hibernate也有一小段的时间了,愈发的觉得Hibernate是个神奇的东西,为什么这么说呢?因为你可以不懂一行sql,直接面向对象,就可以将数据直接保存到数据库去!! 你还可以保存一个对象,然后一次性的将与它相关的所有数据保存到数据库,比如说,你只需要保存班级对象,就可以将该班级信息和该班级下的所有学生在数据库中形成一堆的记录. 而且都不需要你写sql!!! 有木有很神奇....反正宝宝我是惊呆了. 下面就拿具体的代码实现来讲吧~ 首先讲一个简单的  单向一对多的案例(以班级和学生作为

ORM进阶之Hibernate中关系映射

ORM进阶之 ORM简介 ORM进阶之Hibernate简介及框架搭 ORM进阶之Hibernate的三大对象 ORM进阶之Hibernate中对象的三大状态解析 ORM进阶之Hibernate中一对一的关系映射 映射可以说是在hibernate中非常重要的一个内容,通过映射可以让程序员不再思考复杂的sql语句,而是更加的专注于业务逻辑的实现.映射通过一个xml配置文件完成并且我们可以对他进行修改!下边我们来看一下如何完成映射的! 单表映射 每个实体对应一张表,跟其他的实体没有关联关系,这是最简

详谈Hibernate框架关系映射!

接触Hibernate也有一小段的时间了,愈发的觉得Hibernate是个神奇的东西,为什么这么说呢?因为你可以不懂一行sql,直接面向对象,就可以将数据直接保存到数据库去!! 你还可以保存一个对象,然后一次性的将与它相关的所有数据保存到数据库,比如说,你只需要保存班级对象,就可以将该班级信息和该班级下的所有学生在数据库中形成一堆的记录. 而且都不需要你写sql!!! 有木有很神奇....反正宝宝我是惊呆了. 下面就拿具体的代码实现来讲吧~ 首先讲一个简单的  单向一对多的案例(以班级和学生作为

Hibernate对象关系映射(一)

Hibernate的本质是对象关系映射,ORM实现了将对象的变化保存到数据库中.以前我们对关系表操作,执行增CRUD.现在我们不在对关系表进行操作,而是直接对对象操作.对象关系的映射有以下几种 基本图形 图1 一对一映射 分两种情况 主键 唯一外键 1主键 两个对象具有相同的主键,不再有额外字段维护他们的关系 图2 Person和Card之间,他们的主键是相同的 2唯一外键 其实是用来表示多对一的,如果加上唯一限制,就可以表示一对一关联 图3 图3可以看到卡号在person中充当了一个外键. 根

hibernate 表关系映射详解之一对多

一对多 传统模式:jdbc连接数据库的传统模式下,是通过主键连接外键实现一对多关系的映射, 其数据库中表的对应关系是在多方加入一方的主键,而后形成外键连接. Hibernate:引入hibernate框架后,通过类的形式来表示一对多的关系. 举例:订单与订单详细的关系,一个订单包含多个商品,多个商品属于一个订单,两者的关系是一对多的关系. 实现原理: 面向对象实现------ 在order类中加入item类的set集合 ,表示在订单类中包含有多个订单详细(集合表示). 层次结构: 步骤一:编写实