欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【转】Persistence Unit中的类集合 博客分类: EJB3.0 EJB3.0 

程序员文章站 2024-03-17 09:13:40
...

Persistence Unit中的类集合

  The Persistence Unit Class Set

  一个persistence unit将固定数量的一组类映射到关系数据库。缺省情况下,如果你没有在persistence.xml中指定任何元数据,persistence provider就会对包含该persistence.xmlJAR文件进行扫描,从根目录开始搜寻任何标注有 @javax.persistence.Entity注解的类,并将这些类添加到由persistence unit管理的类集合中。此外,你还可以通过<jar-file>元素指定额外的JAR文件,以供persistence provider搜索。该元素的值不能使用绝对路径,只能是一个以包含persistence.xmlJAR文件为基准的相对路径。

  <persistence>

  <persistence-unit name="titan">

  <jta-data-source>java:/OracleDS</jta-data-source>

  <jar-file>../lib/customer.jar</jar-file>

  <properties>

  <property name="org.hibernate.hbm2ddl">update</property>

  </properties>

  </persistence-unit>

  </persistence>

  JAR文件的自动扫描在Java EE环境下是保证可以正常执行的,但在Java SE应用程序中却无法做到可移植。理论上,要决定必须搜索哪些JAR文件也许是不太可能的。不过,现实中这不是问题。参与EJB 3.0专家组的主要厂商都非正式地宣称过,它们会毫无疑问的在Java SE中支持这一特性。无论是否使用自动JAR文件扫描,你都可以用<class>元素显式的列出persistence unit中的类集合。

  <persistence>

  <persistence-unit name="titan">

  <jta-data-source>java:/OracleDS</jta-data-source>

  <class>com.titan.domain.Cabin</class>

  <class> com.titan.domain.Customer</class>

  <properties>

  <property name="org.hibernate.hbm2ddl">update</property>

  </properties>

  </persistence-unit>

  </persistence>

  <class>元素中所列的CabinCustomer类将会与其他从persistence unit中检索出来的类一起被添加到类集合中。如果不希望自动扫描Persistence.xmlJAR文件中的类,那么你可以使用< exclude-unlisted-classes>元素。

  <persistence>

  <persistence-unit name="titan">

  <jta-data-source>java:/OracleDS</jta-data-source>

  <class>com.titan.domain.Cabin</class>

  <class>com.titan.domain.Customer</class>

  <exclude-unlisted-classes/>

  <properties>

  <property name="org.hibernate.hbm2ddl">update</property>

  </properties>

  </persistence-unit>

  </persistence>

  最终,类集合将由所有下列元数据的合集来决定。

  包含persistence.xmlJAR文件中标有@Entity注解的类(除非指定了<exclude- unlisted-classes>)

  <jar-file>元素指定的JAR文件里标有@Entity注解的类

  在META-INF/orm.xml文件里映射的类(如果存在该文件的话)

  在<mapping-file>元素所指定的XML文件中映射的类

  任何用<class>元素列出的类

  通常情况下,你无需指定<class><jar-file><mapping-file>元素。但是有一种情形你可能需要使用上述元素,即当你需要在两个或多个persistence unit中映射同一个类时。

相关标签: EJB3.0