hibernate CascadeType属性

CascadeType.PERSIST   只有A类新增时,会级联B对象新增。若B对象在数据库存(跟新)在则抛异常(让B变为持久态) ;              级联保存,当调用了Persist() 方法,会级联保存相应的数据

CascadeType.MERGE指A类新增或者变化,会级联B对象(新增或者变化) 

CascadeType.REMOVE只有A类删除时,会级联删除B类; 

CascadeType.ALL包含所有; 

CascadeType.REFRESH没用过。 

综上:大多数情况用CascadeType.MERGE就能达到级联跟新又不报错,用CascadeType.ALL时要斟酌下CascadeType.REMOVE 
时间: 2024-10-27 08:24:32

hibernate CascadeType属性的相关文章

hibernate 的 CascadeType 属性

hibernateintegerstringfloatclassmerge @Entity @Table(name="orders")public class Order { //1-m,多的一方为关系维护端,关系维护端负责外键记录的更新,关系被维护端没有权利更新外键记录 private String orderid; private Float amount; private Set<OrderItem> items = new HashSet<OrderItem&

Hibernate fetch属性详解

主要参考 :http://4045060.blog.51cto.com/4035060/1088025 一.hibernate抓取策略(单端代理的批量抓取fetch=select(默认)/join) 1)保持默认,同fetch="select" <many-to-one name="group" column="group_id" fetch="select" /> 另外发送一条select语句抓取当前对象关联实体

hibernate的级联(hibernate注解的CascadeType属性)

[自己项目遇到的问题]: 新增  删除都可以实现 ,就是修改的时候无法同步更新设计三个类:  问题类scask  正文内容类text类    查看数+回复数+讨论数的runinfo类 [正文类和查看数+回复数+讨论数的 类无法修改更新] 后台更改了注解  成功 [参考博客:http://blog.sina.com.cn/s/blog_9b81777f0101gn3f.html] cascade表示级联操作 CascadeType.MERGE级联更新:若items属性修改了那么order对象保存时

hibernate注解的CascadeType属性

cascade表示级联操作 CascadeType.MERGE级联更新:若items属性修改了那么order对象保存时同时修改items里的对象.对应EntityManager的merge方法 (较常用  ) CascadeType.PERSIST级联保存:对order对象保存时也对items里的对象也会保存.对应EntityManager的presist方法 CascadeType.REFRESH级联刷新:获取order对象里也同时也重新获取最新的items时的对象.对应EntityManag

Hibernate unsaved-value 属性

Session的saveOrUpdate方法是由hibernate来判断被操作对象究竟是一个持久化对象还是临时自由状态对象.这需要在对象映射文件的主键id中定义unsaved-value属性,如果不显式定义,则默认为unsaved-value=null. unsaved-value可以是下列几个选项: 1)null:主键是对象类型,Hibernate判断操作对象的主键是否为null,来判断操作对象是否以被持久化,如果是,调用save方法,生成insert语句,在数据库中增加一条记录,如果不是,设

hibernate inverse属性的作用

hibernate配置文件中有这么一个属性inverse,它是用来指定关联的控制方的. inverse属性默认是false,若为false,则关联由自己控制,若为true,则关联 由对方控制. 见例子: 一个Parent有多个Child,一个Child只能有一个Parent. package com.xian; public class Child { private Long id; private String name; private Parent parent; public Long

Hibernate Lazy属性

1 延迟加载策略 Hibernate 的延迟加载(lazy load)是一个被广泛使用的技术.这种延迟加载保证了应用只有在需要时才去数据库中抓取相应的记录.通过延迟加载技术可以避免过多.过早地加载数据表里的数据,从而降低应用的内存开销.Hibernate 的延迟加载本质上就是代理模式的应用,当程序通过 Hibernate 装载一个实体时,默认情况下,Hibernate 并不会立即抓取它的集合属性.关联实体所以对应的记录,而是通过生成一个代理来表示这些集合属性.关联实体,这就是代理模式应用带来的优

Hibernate inverse属性和cascade属性

Inverse属性 Inverse属性,是在维护关联关系的时候起作用的. 表示控制权是否转移.(在一的一方起作用) Inverse , 控制反转. Inverse = false  不反转:   当前方有控制权 True  控制反转: 当前方没有控制权 维护关联关系中,是否设置inverse属性: 1.保存数据                    有影响. 如果设置控制反转,即inverse=true, 然后通过部门方维护关联关系.在保存部门的时候,同时保存员工,数据会保存,但关联关系不会维护

Hibernate inverse属性与cascade属性

理解: inverse属性为false的那一端,拥有管理关系维护的权利 cascade属性指级联,说的通俗点,在cascade那端指定的操作,会影响到所关联的对象 举个例子: 班级和学生的关系是一对多 班级class类包含id,名称和学生的Set集合 学生student类包含id,姓名和班级的id(外键) cascade属性:学生是依赖班级存在的,班级不存在,那么学生也不存在.也就是说,删除班级的同时,学生也就得删除,而不能反过来.一的那端删除时,多的那方已经没有意义了:而多的那端删除时,并不能