不应该使用数据库的ON DELETE CASCADE?

hetty1006 2010-12-16 07:35:48
我们有个需求

要删除某个实体的时候 首先检查是否满足一些条件 如果满足条件 则把所有相关实体都删除

我把检查放在Service Layer

但是把ON DELETE CASCADE 放在数据库外键上

被另外两个技术人员狂批 说绝对不允许这样的code在我们的应用程序里面。。。。

说应该放在Hibernate里面。。。。 还和我说了一大堆什么要follow good practice 要follow design pattern

其实我没明白为啥

可是相关实体真的太多了 我们本来的hibernate object根本没有这些联系

我想问问

我这样做真的这么错嘛?
...全文
389 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dyllove98 的回复:]

ON DELETE CASCADE 这样做的确很难控制

现在的趋势是 数据库的关系尽量的简单,尽量不要设外键之类的,所有的逻辑全部在代码中完成
[/Quote]

非常同意啊,我们就是代码控制的。
  • 打赏
  • 举报
回复
数据库级联尽量少用,特别是 Hibernate 这种 ORM 工具中。我们数据库只有外键关系,不建立外键约束。
hetty1006 2010-12-16
  • 打赏
  • 举报
回复
真的这么复杂?

现在的代码里面只有单向联系

比如A是Parent Object 那么它有B,C,D,E,F.....等Child Object

但是在A中没有这些定义
只是在B,C,D,E,F中有

难道为了使用Hibernate cascade

我要在A里面增加
List<B> bs
List<C> cs
.......
我现在用的是Annotation 方式-,-

还是说 我应该写个方法去search所有的children 然后一个个删除?然后在这个方法上加个@Transactional?
Jlins 2010-12-16
  • 打赏
  • 举报
回复
ON DELETE CASCADE 这样做的确很难控制

现在的趋势是 数据库的关系尽量的简单,尽量不要设外键之类的,所有的逻辑全部在代码中完成
zn85600301 2010-12-16
  • 打赏
  • 举报
回复
一般是不推荐用数据库的级联的 在程序中用事务控制的删除好一些 也容易跟踪问题
你用数据库级联 出了问题确实很难跟踪到
内容概要:本文研究了基于DPWMA调制与正负序分离的ANPC三电平并网逆变器前馈控制策略,旨在解决传统三电平逆变器存在的谐波含量高、电网不平衡工况适应性差及动态响应速度不足等问题。通过采用有源中点箝位(ANPC)三电平逆变器拓扑,结合双极性倍频脉宽调制(DPWMA)、正负序分离锁相技术和电网电压前馈控制,构建了一套一体化的高性能并网控制体系。该体系不仅优化了逆变器的开关动作机制,改善了输出电压电流的谐波特性,而且通过精确的相位同步和扰动补偿,显著提高了系统的动态响应能力和抗扰性能。仿真结果显示,所提出的控制策略能有效降低并网谐波含量,提升锁相精度与系统动态稳定性,确保在复杂电网工况下的高质量稳定并网。 适合人群:具备一定电力电子基础知识和仿真技能的研发人员,尤其是从事新能源发电、储能系统、柔性输电等领域研究的专业人士。 使用场景及目标:①研究和开发高性能并网逆变器,特别是针对大功率、高电能质量要求的应用场景;②探索如何通过先进的调制和控制策略来提高并网逆变器对电网扰动的适应性和响应速度;③为相关领域的学术研究和技术开发提供理论依据和实践指导。 阅读建议:建议读者结合实际的仿真软件(如MATLAB/Simulink)进行实践操作,以便更好地理解和掌握文中提到的各种控制策略的具体实现方法。同时,鼓励读者关注最新的研究成果和发展趋势,不断深化对该领域的认识。

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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