如果在应用程序中使用 Java 持久性,则需要持久性单元。持久性单元是一个具有唯一名称的属性集合,这些属性用于确定如何管理和永久保存应用程序中的一组特定实体。
持久性单元是在 persistence.xml 文件中定义的。您可以在 persistence.xml 文件中定义多个持久性单元,但每个持久性单元必须具有唯一的名称。
在持久性单元中指定的属性包括以下内容:
持久性单元可以作为 WAR 或 EJB-JAR 文件的一部分进行打包,或者也可以将其打包为 JAR 文件,随后将该文件包括在应用程序中。
持久性单元范围由 persistence.xml 的位置来确定。使用向导创建持久性单元时,IDE 将在其范围的合适位置创建 persistence.xml。例如,如果使用 IDE 为 EJB 模块创建持久性单元,IDE 将在 EJB 模块的 src/conf 目录中生成 persistence.xml。生成 EJB JAR 后,它会将 persistence.xml 打包到 EJB JAR 的 META-INF 目录中。持久性单元范围是 EJB JAR 文件中的一组类。
如果未在持久性单元中显式地指定范围,缺省情况下 EJB JAR 文件中的所有实体将位于 persistence.xml 中定义的持久性单元范围内。
注意:
持久性提供程序是指 Java 持久性 API 的实现。持久性提供程序是一个库,它用于提供对应用程序中的对象永久保存的功能。
IDE 与 TopLink Essentials 持久性提供程序捆绑在一起。TopLink Essentials 是引用实现,它是 Sun Java System Application Server Platform Edition 9 中的缺省 Java 持久性提供程序。TopLink Essentials 持久性提供程序是一个包含 toplink-essentials.jar 和 toplink-essentials-agent.jar 的库。您既可以使用 TopLink Essentials 作为提供程序,也可以指定不同的持久性提供程序。
数据源是指存储持久性实体的数据库。必须在服务器上注册数据源,并使用 JNDI 名称进行指定。如果事务是容器管理 JTA 事务,则数据源必须为 JTA 数据源。如果事务是应用程序管理事务,请按照在 IDE 中注册的 JDBC 数据库连接来指定数据源。
在 Java SE 环境中,可以使用数据源或其他方法来指定数据库,具体取决于所使用的持久性提供程序的要求。
持久性单元用于指定如何在应用程序中管理事务。可以使用的事务类型取决于目标容器。如果要部署到 Java EE 容器中,事务可以为容器管理事务或应用程序管理事务。如果不想要部署到 Java EE 容器中,事务必须由应用程序进行管理。
在 persistence.xml 中,持久性单元的事务类型被设置为 JTA。如果要部署到 Sun Java System Application Server 中,在创建持久性单元时,将缺省选择此选项。
在 persistence.xml 中,持久性单元的事务类型被设置为 RESOURCE_LOCAL。