关于hibernate的级联删除和级联更新

caiterry 2009-07-13 04:23:35
问题1:
如果使用了hibernate的级联删除和更新,那么是不是在对应的数据库中就不用设置主键和外键的级联删除与更新,hibernate已经实现了这一功能,那么数据库就不用此功能了

问题2:
hibernate没有配置相应的级联删除和更新,而数据库配置了,那么是不是在调用hibernate相关save和update的方法的时候,数据库帮我做了级联删除和更新

问题3:

如果以上两个问题,我都想对了,那么好的方式,是应该在数据库中把表的关系主键和外键配还有级联删除和更新,还是利用hibernate配置的文件来进行?好的方案是采用哪者?
...全文
2296 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
z249683156 2010-08-04
  • 打赏
  • 举报
回复
还是没有明白啊, 有没有人能说的明白点啊
gybenq 2010-08-04
  • 打赏
  • 举报
回复
问题一对 , 问题二的数据库设置级联删除和更新 怎么设? 用触发器吗
用hibernate配置的文件来进行级联cascade和inverse属性来控制比较方便
toss2000 2010-08-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caiterry 的回复:]
如果采用hibernate配置文件来删除,会遇见这样的问题,就是当这样的关系时:一个科目对应多个课程,一个课程对应多个知识点,如果这个关系中,我删除课程中的一条记录,同时应该删除所有与该课程相关的知识点数据,但是课程所级联的科目没有删除时,会报错,这种情况怎么处理呢???
[/Quote]

这个我觉得不会有错啊,一个科目对应多个课程,其中一个课程删除了,科目当然不应该被删除了啊.不过要是一个课程对应多个科目就麻烦点了
Beyondhang 2010-08-04
  • 打赏
  • 举报
回复
设置hibernate的inverse属性值,使多的一方维护一对多关系,这样删除多的一方就不会报错了.
haoren_e 2009-09-15
  • 打赏
  • 举报
回复
一般我们在配置文件中选择id产生器,一般是在配置文件中加上cascade="all"属性表示级联,比如更新一对多关系中的"一"时,也会对应更新"多";有时候在数据库即使设置了主外键关联,也不可以级联更新吧,必须在配置文件中加上cascade属性
xjpcj 2009-09-14
  • 打赏
  • 举报
回复
我的做法是甚至不使用外键,高手点评一下有什么缺点和优点
hzhyn 2009-09-14
  • 打赏
  • 举报
回复
用hibernate删除回升很多代码,但有时可能会延迟,配置不正确时也会报严重的错误。

这个我们刚才试了,,是会出现很多问题,,
gaobaiy 2009-07-17
  • 打赏
  • 举报
回复
LZ说的数据库配置了是什么意思呢,是数据库应该触发器?

使用hibernate管理关系是很好的选择
meander 2009-07-17
  • 打赏
  • 举报
回复
一对二不对
peng15653830_gmail 2009-07-17
  • 打赏
  • 举报
回复
既然已经用了orm框架,肯定在hibernate中设置级联映射比较方便,也利于维护

如果采用hibernate配置文件来删除,会遇见这样的问题,就是当这样的关系时:一个科目对应多个课程,一个课程对应多个知识点,如果这个关系中,我删除课程中的一条记录,同时应该删除所有与该课程相关的知识点数据,但是课程所级联的科目没有删除时,会报错,这种情况怎么处理呢???
首先要明白一点,级联只和业务逻辑有关系,当你有这个业务需求的时候,才有必要设置相应的级联关系
在JPA中,当你进行级联操作的时候,一定要搞清楚哪个是关系维护方,哪个是被维护方,关系维护方进行删除操作,如何设置了级联删除,会把被维护方一起删掉;而对被维护方进行删除操作,则应该首先解除两者的关联关系,解除关系是从维护方解除,再进行删除。搞清了这点,相信这个问题不难解决。hibernate中的级联关系应该是相似的概念,把概念搞清楚了,再进行操作。
一师兄 2009-07-14
  • 打赏
  • 举报
回复
1.用hibernate的事务处理
2.用hibernate删除回升很多代码,但有时可能会延迟,配置不正确时也会报严重的错误。
3.用jdbc删除,要写好多sql,但是数据更新的及时。
caiterry 2009-07-13
  • 打赏
  • 举报
回复
如果采用hibernate配置文件来删除,会遇见这样的问题,就是当这样的关系时:一个科目对应多个课程,一个课程对应多个知识点,如果这个关系中,我删除课程中的一条记录,同时应该删除所有与该课程相关的知识点数据,但是课程所级联的科目没有删除时,会报错,这种情况怎么处理呢???
zhaoxikuaile 2009-07-13
  • 打赏
  • 举报
回复
我认为,好的方式应该采用问题一,利用hibernate配置的文件来进行级联删除和更新。
liu_zhaoqf 2009-07-13
  • 打赏
  • 举报
回复
mark
我也想了解一下。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧