【问题标题】:JPA cascades creating tight couplingsJPA 级联创建紧密耦合
【发布时间】:2012-11-12 20:01:22
【问题描述】:

JPA 提供级联,可用于自动持久化/更新/删除特定实体所依赖的其他实体。假设我有三个实体:Job、BankAccount 和 Person(与前两个实体具有 OneToMany 关系)。在没有级联事件的情况下,我会写:

person.addJob(job);
person.addBankAccount(bankAccount);

em.persist(job);
em.persist(bankAccount);
em.persist(person);

级联事件(例如 CascadeType.PERSIST 类型)使我能够省略前两个 persist() 调用,并确保单个 em.persist(person); 调用也将保持依赖实体。

现在,这使得作用于实体的代码与其内部紧密耦合。我管理实体的方式现在与我在实体中使用的注释紧密绑定。由于它引入了额外的耦合,这是否可以被视为一种不好的做法?

【问题讨论】:

    标签: java jpa entity entity-relationship cascade


    【解决方案1】:

    并非如此,利用级联操作是相当标准的做法。

    您应该创建集成测试,以验证您的域上注释的任何级联是否实际发生。

    【讨论】:

    • 是否应该有一个既定的策略来在整个代码中利用级联?仅在某些实体中使用级联会导致 IMO 代码难以维护。我说的对吗?
    • 我会这么认为,确实没有任何反对在需要的地方使用它的论据。不要只是盲目地添加它,考虑一下您将如何与这些对象进行实际交互以及您的要求是什么。
    猜你喜欢
    • 2017-12-28
    • 2011-05-24
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2011-08-26
    • 1970-01-01
    相关资源
    最近更新 更多