首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate学习1:Hibernate注解CascadeType

2012-11-22 
Hibernate学习一:Hibernate注解CascadeType一.概念 现有一场景:一个管理员可以管理多个网吧,一个网吧可以

Hibernate学习一:Hibernate注解CascadeType

一.概念

    现有一场景:一个管理员可以管理多个网吧,一个网吧可以被多个管理员管理。从中抽象出一个多对多的例子user-bar。主控方user:多对多里面里面会有第三张表user_bar,由主控方维护这里面的外键记录,也就是创建一个user的时候必须指定其管理的bar。被控方bar:没有权利更新外键记录。单独创建一个bar,不需要也不能指定其属于哪个user。

?

二. CascadeType

    CascadeType.MERGE:级联更新。创建一个user的时候,指定其管理哪些bar,如果某一个bar不存在,会在创建user的时候一起创建。CascadeType.PERSIST:级联保存。创建一个user的时候,指定其管理哪些bar,如果某一个bar不存在,抛出异常。所以指定其管理哪些bar必须是事先存在的。CascadeType.REMOVE:级联删除。删除一个user的时候,会删除它管理的bar,最终是user_bar里面删了,bar里面也删了。如果不指定CascadeType.REMOVE,只删user_bar里面。CascadeType.REFRESH:级联刷新。第一次查询某一user和第二次查询同一user之间,删除了某一bar,CascadeType.REFRESH是的任何时候看到的都是最新的记录(两次查询结果不一样)。CascadeType.ALL:包含以上所有。

?

三. 使用

    根据具体的场景要指定不同的Type。user和bar之间的关系,并没有说user不存在了,网吧就不存在,所以不能用CascadeType.REMOVE。保存一个user的时候,指定他能够管理的网吧必须是已经存在的,所以CascadeType.MERGE和CascadeType.MERGE中用CascadeType.MERGE。

?

四. 吐槽

???? 第一次接触CascadeType,去网上找资料的时候,NM,全部是一样的文章,甚至连错误都是一起copy过去的,真不赞同这样的学习方式。

?

热点排行