我们有一个JPA 实体
。一旦实体被持久化到数据库中,该实体的某些字段(数据库列)以及其他一些数据(不属于该实体的一部分)就必须存储在 JCR 对象存储中。
我是否应该为 DB 和 JCR 创建一个实体(JPA),然后在实体中添加 JCR 字段并将它们标记为 @Transient?
或
我应该使用继承还是组合(使用 JPA 实体)并创建一个新的 JCR 特定对象?基本上,JPA 实体应该严格用于 DB,还是在这种情况下 @Transient
是一种滥用?
最佳答案
should JPA entities be strictly used for DB or is
@Transient
in this case an abuse?
不是滥用,但您需要非常小心地进行 JPA 操作。一次合并
或刷新
次数太多,您的 transient 字段值就会丢失。
就我个人而言,我会在 JPA 和 JCR 上创建另一个抽象层,将您的域对象作为 POJO 进行管理,某种 DomainObjectRepository
可以处理 CRUD 操作,两者进行交互 JPA 和 JCR,并封装两种存储技术之间的映射(每个技术的映射层都具有一组专用的对象 - JPA 实体、JCR 节点)。
关于java - 标记非数据库字段 @Transient 与范围 JPA 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62888268/