配置 pureQuery 以使用多个 DB2 包集合
设置 pureQuery Java™ Persistence API (JPA) 应用程序以使用多个 DB2® 包集合。
关于此任务
有可能存在数据库模式的多个副本。这种情况可能发生在分区数据库模式中,该模式中有一个数据库用于存储东海岸职员数据,另一个数据库则用于存储西海岸职员数据。在此情况下,这两个数据库具有相同的模式。这两个数据库可能分别具有一个数据库目录。或者,可能仅存在一个数据库,在这种情况下,表名(模式名)的高级限定词必须不同。因为模式相同,所以可以用一组 JPA 实体来访问两组数据。可以使用几种方法来配置 JPA 以处理这些情况。
要点: 存在具有多个单独数据库或单一数据库的多个持久性单元时,必须为每个持久性单元都运行一次 wsdbgen 命令。
存在以下三种需要使用多个 DB2 包集合的情况。如果需要更多信息,请阅读有关配置应用程序以使用 IBM® Optim™ PureQuery
Runtime 的信息。
- 存在数据源名称不相同的两个使用静态 SQL 的持久性单元时,会存在两组 DB2 包:每个数据库中各有一组 DB2 包。因为存在两个持久性单元,所以存在用于 JPA 运行时环境的两个 persistence_unit_name.pdqxml 文件。
- 如果表位于单一数据库中,那么也可以使用两个持久性单元。在此情况下,这两个持久性单元中的数据源相同。但是,模式名称属性 wsjpa.jdbc.Schema 必须不同。存在两组 DB2 包。每个 DB2 包必须具有不同的包名或不同的包集合名。wsdb2gen 和 DB2 绑定命令都具有用于指定包集合名和包名的选项。
- 可以创建单一持久性单元,这样便不再需要维护两个持久性单元的配置和多次运行 wsdbgen 命令。此配置需要一个公共包名。因此,包集合名必须不同。 使用 createEntityManager(Map map) 方法(其中 map 包含 wsjpa.jdbc.Schema 和 wsjpa.jdbc.CollectionId 属性的值)指定包集合名和模式名。