jpa - OSGI 环境中的 JPA - 使实体管理器保持同步
问题描述
我有一个 osgi equinox env,希望利用 eclipselink jpa 进行实体持久性。我不清楚一些事情。首先,应该为我们的解决方案创建何时\何处\多少个实体管理器?其次,如果超过 1 个,我如何让这些实体管理器保持同步?
我有一个与子实体具有双向 1..N 关系的父实体。父母可以没有孩子,孩子也可以没有父母。我有一个允许我编辑/添加/删除/...父实体的父服务。我有一个子服务,允许我编辑/创建/删除/addToParent/removeFromParent/...子实体。
To handle the bi directional associations-
Add child to parent:
Parent p = em.getReference(Parent.class, parentId);
p.addChild(child);
beginTransaction();
persist(child);
commitTransaction();
Remove child from parent:
beginTransaction();
Parent p = child.getParent();
p.removeChild(child);
commitTransaction();
现在,我认为每个希望持久化实体的服务包都会在激活时创建一个 EntityManager,并在停用时将其拆除。
因此,当我创建父实体时,父服务会处理这些事务。如果我创建父 1,则父服务知道父 1,db 也是如此。但是,子服务不知道 parent1。此外,如果我有一个 parent1,并向其中添加一个 child1,则子服务知道添加的 child1。但是,如果我要求父服务让我获得 parent1,它不会看到 child1。
看来 entityManagers 不同步,但我不知道这些应该如何保持同步,或者设计完全错误?
解决方案
推荐阅读
- php - 修改wordpress主题php链接
- c++ - 具有空定义的模板特化
- php - 带有闭包 CURL 标头的 PHP 类方法
- npm - 发布 npm 包的部署工作流程
- java - 如何检查文件是否存在于 java 中的 Azure Blob 容器中
- c# - 在 Linux 中找不到 PL2303 设备的序列号属性
- excel - 在 Countifs 中使用 ABS 函数
- apache-kafka - Kafka中'metric.reporters'和'kafka.metrics.reporters'属性之间的区别
- sql - R在读取数据帧时复制大整数
- angular - setValue 数据未显示在表单字段中,当我编辑列表项时