级联与Session操作
2010-05-03 17:09
176 查看
Hibernate的每一种级联设置都对应一个Session的方法。当调用这个方法去处理一个实体时,如果实体有关联对象配制了这种方法对应级联,那么关联对象将被一样地处理!
总共提供以下几种级联设置:
package org.hibernate.annotations;
/**
* Cascade types (can override default EJB3 cascades
*/
public enum CascadeType {
ALL,
PERSIST, 对应persist操作
MERGE, 对应merge操作
REMOVE, 对应remove操作
REFRESH, 对应refresh操作
DELETE, 对应delete操作
S***E_UPDATE,对应save,update,saveOrUpdate操作
REPLICATE,对应replicate操作
DELETE_ORPHAN,
LOCK,对应lock操作
EVICT,对应evict操作
}
对于后6种应该比较熟悉了,它们都是session早期就有的接口所对应的级联选项。
绿色的四项其实功能上并没什么不同,只不过它们是JPA规范支持的四种接口。我想hibernate session引入这四个接口的一个主要原因是当我们使用JPA标准注解配制级联时,就是这四种级联选项,如果想让些级联设置生效,那session一定要提供对应的方法!
举个例子:
public class Item {
...
@OneToMany(cascade = { CascadeType.PERSIST,
CascadeType.MERGE,
CascadeType.REMOVE },
mappedBy = "item")
private Set<Bid> bids = new HashSet<Bid>();
...
}
此时如果们调用session.persist(item),那么它的bids集合里的所有bid也会一同persist.
但是如果你使用session.save则不会。
一般来说,many-to-one和many-to-many不怎么使用级联,它们使用的话讲不太通。one-to-one和one-to-many是最常用级联的!
a
a
a
a
总共提供以下几种级联设置:
package org.hibernate.annotations;
/**
* Cascade types (can override default EJB3 cascades
*/
public enum CascadeType {
ALL,
PERSIST, 对应persist操作
MERGE, 对应merge操作
REMOVE, 对应remove操作
REFRESH, 对应refresh操作
DELETE, 对应delete操作
S***E_UPDATE,对应save,update,saveOrUpdate操作
REPLICATE,对应replicate操作
DELETE_ORPHAN,
LOCK,对应lock操作
EVICT,对应evict操作
}
对于后6种应该比较熟悉了,它们都是session早期就有的接口所对应的级联选项。
绿色的四项其实功能上并没什么不同,只不过它们是JPA规范支持的四种接口。我想hibernate session引入这四个接口的一个主要原因是当我们使用JPA标准注解配制级联时,就是这四种级联选项,如果想让些级联设置生效,那session一定要提供对应的方法!
举个例子:
public class Item {
...
@OneToMany(cascade = { CascadeType.PERSIST,
CascadeType.MERGE,
CascadeType.REMOVE },
mappedBy = "item")
private Set<Bid> bids = new HashSet<Bid>();
...
}
此时如果们调用session.persist(item),那么它的bids集合里的所有bid也会一同persist.
但是如果你使用session.save则不会。
一般来说,many-to-one和many-to-many不怎么使用级联,它们使用的话讲不太通。one-to-one和one-to-many是最常用级联的!
a
a
a
a
相关文章推荐
- JSP下拉选框,级联选择
- 三种省市级联下拉列表的写法
- Mysql中的级联查询
- JavaScript时间操作之年月日星期级联操作
- 在父菜单和子菜单在同一张表的级联怎么做啊
- 中国电信中兴F460光猫破解及路由级联设置
- easyUI实现搜索下拉框,省市的级联下拉框和编辑时的赋值
- hibernate笔记--cascade级联以及inverse属性
- Bootstrap~多级导航(级联导航)的实现效果【附代码】
- Mybatis 级联属性赋值
- (原创)Hibernate 使用过程中(尤其是多对多关联中的级联保存和级联删除)的注意事项(基于项目的总结)
- MySQL权限篇之REFERENCES以及外键级联操作
- iOS开发总结之项目开发中使用UITableView几百行代码搞定级联表格
- 级联菜单导致的JSP页面异常
- php实现三级级联下拉框
- javascript级联菜单实现案例(使用纯JavaScript)
- 递归打印级联目录
- MyBatis级联第四篇——N+1问题和全局延迟加载【推荐,MyBatis级联重要的一篇原创,建议认真读】
- hibernate 级联验证-@Valid (JDK1.7)
- Oracle数据库中的级联查询、级联删除、级联更新操作教程