持久单元定义了应用中由EntityManager实例管理的所有实体类的集合。这个集合代表在一个特定数据存储中存储的数据。
持久单元通过persistence.xml进行配置,persistence.xml文件通常放在META-INF目录下,在这里,包含META-INF目录的目录称为持久单元的根,持久单元的根决定了持久单元的有效范围,在有效范围内每个持久单元的名字是唯一的。
持久单元可以打包为WAR或EJB JAR文件,或者打包为JAR文件然后包含于WAR或EAR文件中。如果持久单元以类的形式打包到EJB JAR文件中,persistence.xml应位于EJB JAR的META-INF目录中。如果持久单元以类的形式打包到WAR文件中,persistence.xml应位于WAR文件的WEB-INF/classes/META-INF目录中。如果持久单元以JAR文件的形式打包到WAR或EAR文件中,此JAR文件应位于:
-
WAR文件的WEB-INF/lib目录中
-
EAR文件的顶层目录中
-
EAR文件的库目录中
persistence.xml需要从上下文中取得数据源的jndi名,然后定义持久单元及指定受管的持久类。