我们有个需求要删除某个实体的时候 首先检查是否满足一些条件 如果满足条件 则把所有相关实体都删除我把检查放在Service Layer 但是把ON DELETE CASCADE 放在数据库外键上被另外两个技术人员狂批 说绝对不允许这样的code在我们的应用程序里面。说应该放在Hibernate里面。 还和我说了一大堆什么要follow good practice 要follow design pattern其实我没明白为啥可是相关实体真的太多了 我们本来的hibernate object根本没有这些联系我想问问 我这样做真的这么错嘛?

解决方案 »

  1.   

    ON DELETE CASCADE 这样做的确很难控制现在的趋势是  数据库的关系尽量的简单,尽量不要设外键之类的,所有的逻辑全部在代码中完成
      

  2.   

    真的这么复杂?现在的代码里面只有单向联系比如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?
      

  3.   

    数据库级联尽量少用,特别是 Hibernate 这种 ORM 工具中。我们数据库只有外键关系,不建立外键约束。