标记非数据库字段@Transient vs extent JPA Entity?

blu*_*ker 2 java hibernate jpa jcr

我们有一个JPA Entity. 一旦实体保存在 db 中,该实体的某些字段(db 列)以及其他一些数据(不属于该实体的一部分)必须存储在 JCR 对象存储中。

我是否应该为 DB 和 JCR 创建一个实体(JPA),然后在实体中添加 JCR 字段并标记它们 @Transient?

或者

我应该使用继承还是组合(使用 JPA 实体)并创建一个新的 JCR 特定对象?基本上,JPA 实体应该严格用于 DB 还是@Transient在这种情况下是一种滥用?

cri*_*zis 5

JPA 实体应该严格用于 DB 还是@Transient在这种情况下是一种滥用?

不是滥用,但您需要非常小心地处理 JPA 操作。一个mergerefresh太多,您的瞬态字段值就会丢失。

个人而言,我会创建了一个抽象在两个JPA和JCR的另一层会管理你的域对象的POJO,某种DomainObjectRepository会处理CRUD操作,以交互两个JPA和JCR,并从封装/映射到两个存储技术(将映射层映射到具有专用对象集的每种技术 - JPA 实体、JCR 节点)。