java - 标记非数据库字段 @Transient 与范围 JPA 实体?

标签 java hibernate jpa jcr

我们有一个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/

相关文章:

java - 从服务器收到的未知初始字符集索引 '255'

java - Tapestry JPA Jackson 反序列化

java - 来自实体的数据库或来自数据库的实体

java - 模型中的私有(private)成员

java - Java 升级 8.0.6.15 到 8.0.6.25 后握手失败,但在将旧安全文件夹从 8.0.6.15 替换为新的 Java 版本 8.0.6.25 后工作

java - Vigenere 密码输出

java - 异常 org.springframework.beans.factory.UnsatisfiedDependencyException

java - 从 Hibernate 中的插入中排除自动生成的标识列

java - Spring模型对象在jsp上变为空

java - 具有相同名称的 Jackson XML 标记和属性