一个persistence unit将固定数量的一组类映射到关系数据库。缺省情况下,如果你没有在persistence.xml中指定任何元数据,persistence provider就会对包含该persistence.xml的JAR文件进行扫描,从根目录开始搜寻任何标注有 @javax.persistence.Entity注解的类,并将这些类添加到由persistence unit管理的类集合中。此外,你还可以通过<jar-file>元素指定额外的JAR文件,以供persistence provider搜索。该元素的值不能使用绝对路径,只能是一个以包含persistence.xml的JAR文件为基准的相对路径。
<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>元素中所列的Cabin和Customer类将会与其他从persistence unit中检索出来的类一起被添加到类集合中。如果不希望自动扫描Persistence.xml中JAR文件中的类,那么你可以使用< 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.xml的JAR文件中标有@Entity注解的类(除非指定了<exclude- unlisted-classes>)
<jar-file>元素指定的JAR文件里标有@Entity注解的类
在META-INF/orm.xml文件里映射的类(如果存在该文件的话)
在<mapping-file>元素所指定的XML文件中映射的类
任何用<class>元素列出的类
通常情况下,你无需指定<class>,<jar-file>或<mapping-file>元素。但是有一种情形你可能需要使用上述元素,即当你需要在两个或多个persistence unit中映射同一个类时。
分享到:
相关推荐
本书详细介绍了如何配置JPA,包括在Java应用服务器中设置持久化单元(Persistence Unit),以及如何在persistence.xml文件中定义数据源、提供者和其他配置属性。同时,书中还涵盖了事务管理和并发控制,这是多用户...
`PersistenceUnit` 是 JPA 中的一个重要组成部分,它是数据库连接、实体类、映射元数据等配置信息的集合。 在描述中没有提供具体细节,但“DoublePersistenceUnit”可能是指在一个应用中使用两个不同的`Persistence...
持久化单元(Persistence Unit)是EJB3中用于管理实体Bean和其他持久化资源的基本单位。一个持久化单元定义了一个特定的类集合与数据库之间的映射关系。为了有效地使用实体管理器(EntityManager)进行实体的创建、...
在EJB3中,持久化单元是一个非常核心的概念,它定义了一个特定的类集合与数据库之间的映射关系。每个持久化单元都代表了一个特定的应用场景,用于管理和操作一组相关的实体对象。 #### 四、持久化单元的定义与配置 ...
在JPA中,一个持久化单元(Persistence Unit)是实体类的集合,它定义了与数据库的连接配置以及事务处理方式。在提供的描述中,`persistence.xml`文件是JPA配置的核心,它包含了关于持久化单元的详细信息。例如,`...
- 定义持久化单元(persistence unit)在`persistence.xml`中,配置事务类型和数据源。 - 实体管理器(EntityManager)是JPA的核心,负责管理实体对象和数据库交互,维护持久化上下文(persistence context),...
Spring框架与Java Persistence API (JPA)的结合使用是当前企业级应用开发中的常见实践之一。Spring为JPA提供了很好的集成支持,使得开发者能够更加方便地管理持久层逻辑。 #### 二、所需依赖库(JAR包) 在项目中...
Persistence Unit是JPA中的一个配置概念,它定义了要持久化的实体类集合以及相关的连接信息。在`persistence.xml`文件中配置。 综上所述,JPA API CHM文件中可能包含了关于JPA的详细文档,包括以上提到的各个方面,...
5. **持久化单元(Persistence Unit)**:定义了应用程序中所有要管理的实体集合,以及与之关联的数据库连接信息。在`persistence.xml`配置文件中定义。 6. **查询(Query)**:JPA提供两种类型的查询,一种是JPQL...
4. **持久化单元(Persistence Unit)**: 在`persistence.xml`配置文件中定义,它定义了数据源、JPA供应商、实体类等信息。 5. **查询语言(JPQL)**: JPA 提供了自己的查询语言,类似SQL,但面向对象,用于从...
2. **持久上下文(Persistence Context)**:持久上下文是指那些被持久化操作所管理的对象的集合,它负责跟踪实体对象的状态变化。 3. **实体管理器(Entity Manager)**:用于管理实体对象的生命周期,执行持久化操作的...
1. **配置持久化单元(Persistence Unit)**:在`persistence.xml`文件中定义数据库连接信息,包括数据源、供应商、版本等。 2. **获取实体管理器工厂**:通过`Persistence.createEntityManagerFactory()`方法,根据...
这段代码首先创建了`Student`和`Course`的实例,然后将它们添加到对方的集合中,最后调用`em.persist()`方法持久化这些实体。这样,JPA会自动处理中间表的插入,实现双向多对多的关联。 在查询时,我们可以通过一个...
4. **注解**:Java EE中的注解,如`@Override`、`@EJB`、`@PersistenceUnit`等,用于标注代码以实现特定功能。 5. **异常**:Java EE特有的异常类,以及如何处理这些异常的信息。 6. **示例代码**:部分API会附带...
使用这些核心JAR包,你可以开始设置一个基本的Hibernate环境,包括配置持久化单元(persistence unit),定义实体类,创建会话工厂,执行CRUD(创建、读取、更新、删除)操作,以及使用HQL或JPQL进行复杂查询。...
8.2. 在集合中出现的依赖对象 (Collections of dependent objects) 8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 ...
8.2. 在集合中出现的依赖对象 (Collections of dependent objects) 8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 ...
8.2. 在集合中出现的依赖对象 (Collections of dependent objects) 8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 (Dynamic...
8.2. 在集合中出现的依赖对象 (Collections of dependent objects) 8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 ...