术语容器管理持久性 (Container-Managed Persistence, CMP) 是指,EJB 容器负责处理实体 Bean 所需的所有数据库访问。按照 J2EE 1.4 规范进行编码时,需要创建 CMP 实体 Bean,然后在中描述如何将该实体 Bean 映射到数据库中的表。
如果要部署到 Sun Java System Application Server/GlassFish,则应在 EJB 模块 src/conf 目录中的 sun-cmp-mappings.xml 描述符文件中指定该模块的 CMP 映射。如果通过数据源生成 CMP 实体 Bean,则在创建 CMP 实体 Bean 时,IDE 将生成 sun-cmp-mappings.xml。要编辑 CMP 映射,您需要在 XML 编辑器中打开 sun-cmp-mappings.xml。
sun-cmp-mapping.xml 描述符文件描述了将实体 Bean、CMP 字段和 CMR 关系映射到数据库的方式。Bean 的代码中不包含数据库访问 (SQL) 调用。因此,Bean 的代码并未绑定到特定的持久性存储机制(数据库)。由于具有这一灵活性,即使在使用不同数据库的其他 J2EE 服务器上重新部署同一实体 Bean,也不需要修改或重新编译 Bean 的代码。这使得实体 Bean 更易于移植。
为了生成数据访问调用,必须提供一个用于定义 Bean 的持久性字段和关系的架构。CMP 实体 Bean 反映数据库的结构。Bean 的 CMP 字段对应于数据库表中的列;而关系字段对应于数据库中的外键。
如果要部署到 Sun Java System Application Server,IDE 可以帮助您生成 CMP 映射。如果要部署到其他应用服务器,则必须通过编辑特定于服务器的部署描述符来自行配置 CMP 映射。
共有三种在 IDE 中使用 CMP 映射的策略:
有关 CMP 实体 Bean 规范的详细描述,请参见 Enterprise JavaBeans 规范 2.1 版。