`
benbencen
  • 浏览: 4385 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Persistence unit的打包问题

阅读更多

使用过JPA嘛?遇到过打包实体后,jar包内部的实体不会自动mapping嘛?或者这里可以解决你的问题。

Persistence Unit的概念:每个EntityManager负责将固定数量的一组类映射到数据库中,这组类就被称做persistence unit。Persistence unit是在persistence.xml中定义的。根据Java Persistence规范的要求,该部署描述文件是必需的。一个persistence.xml文件可以定义一个或多个persistence unit,它一般都会放置在META-INF目录中。

每个persistence unit只能关联一个数据源。

XML schema文件persistence.xml的根节点是<persistence>,它包含了一个或多个<persistence-unit>元素。每个<persistence-unit>元素有两个属性:name(必需)和transaction-type(可选)。<persistence-unit>的子元素是<description>(可选)、<provider>(可选)、<jta-data-source>(可选)、<non-jta-data-source>(可选)、<mapping-file>(可选)、<jar-file>(可选)、<class>(可选)、<properties>(可选)和<exclude-unlisted-classes>(可选)。

下面是一个persistence.xml文件的例子。

<persistence>

   <persistence-unit name="titan">

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

      <properties>

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

      </properties>

   </persistence-unit>

</persistence>

 

进入主题了,为什么实体打成的jar包会出问题呢?根据官方说法:正常来说JAR文件是可以自动扫描的,但是那只是在Java EE环境下是保证可以正常执行,但在Java SE应用程序中却无法做到。所以呢在JavaSE环境中我们要自己告诉它,那个jar包要被扫描。

我们通过<jar-file>元素 去描述jar包,例如:

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

需要注意的是描述jar文件的路径问题,<jar-file>元素的值不能使用绝对路径,只能是一个相对路径。我试过在Junit测试时,是以包含persistence.xml的META-INF文件夹同级的目录为基准路径,但是在tomcat环境中是以webApps下各个应用文件夹第一层的META-INF为基准路径。

 

分享到:
评论

相关推荐

    ejb3中文版

    持久化单元(Persistence Unit)是EJB3中用于管理实体Bean和其他持久化资源的基本单位。一个持久化单元定义了一个特定的类集合与数据库之间的映射关系。为了有效地使用实体管理器(EntityManager)进行实体的创建、...

    EJB3(中文版)PDF

    每个持久化单元都需要定义在 `&lt;persistence-unit&gt;` 元素内,并且需要指定唯一的名字,即 `name` 属性。此外,还可以指定事务类型 (`transaction-type`)、数据源 (`jta-data-source` 或 `non-jta-data-source`)、映射...

    Eclipse开发EJB3

    - 在Eclipse或MyEclipse中创建一个新的EJB工程,指定工程名和持久化单元(Persistence Unit)配置。持久化单元是数据库连接的配置,包括数据库名称和JNDI数据源。 4. **数据库连接与实体Bean生成** - 使用Eclipse...

    EJB 3.0 学习资料

    - persistence.xml文件定义了一个持久化单元(persistence-unit),其中包含了所有相关的实体类(标签)和数据库连接配置(标签)。 - 例如,unitName属性与SessionBean中的@PersistenceContext注解相对应,连接...

    EJB3+JBOSS5+JPA整合

    这个整合过程涉及到的注解还有`@Inject`用于依赖注入,`@PersistenceUnit`用于注入EntityManagerFactory等。开发者还需要理解JBOSS的部署结构以及如何配置EJB和JPA的相关属性。 总的来说,“EJB3+JBOSS5+JPA整合”...

    ejb3.0src.rar_ejb

    例如,`@Stateless`、`@Stateful`、`@Singleton`用于声明会话bean的类型,`@MessageDriven`用于声明消息驱动bean,`@PersistenceContext`和`@PersistenceUnit`用于注入数据访问对象(DAO)。 2. **实体bean的简化**...

    EJB3.0教程

    2. **配置持久化单元(Persistence Unit)**:在`persistence.xml`中定义数据源和实体类。 3. **实现业务逻辑**:创建会话Bean,使用注解声明方法和依赖。 4. **编写查询**:使用JPQL或Criteria API进行数据查询。...

    EJB3.0简单实例

    - 数据配置文件:可能是`.persistence.xml`,定义了JPA的配置,包括持久化单元(Persistence Unit)和连接数据库的相关设置。 - JBOSS部署文件:可能包含`.ear`或`.war`文件,这是打包好的EJB3.0应用,准备部署到...

    ejb3+jboss

    1. 注解驱动:EJB3引入了注解,如`@Entity`, `@Stateless`, `@Stateful`, `@MessageDriven`, `@PersistenceContext`, `@PersistenceUnit`等,使得开发者无需编写大量的XML配置文件,可以直接在类和方法上声明其功能...

    JBoss下EJB3.0实例教程(黎活明)

    4. 数据库连接和JPA配置:设置数据源,创建实体类,使用JPA注解(如`@Table`、`@Column`)来映射数据库表,然后通过`@PersistenceUnit`注入`EntityManagerFactory`。 5. 编写客户端代码:创建一个Java SE或Web应用...

    基于Struts1.2和EJB3.0整合的一个小项目

    项目使用了Oracle10g作为数据库,这意味着需要配置JDBC数据源,并在EJB中设置持久化单元(Persistence Unit),以连接数据库。在EJB3.0中,通常使用`persistence.xml`文件来定义这些信息。 **文件列表解析** ...

    java_school_persistence:关于Java持久性的讲座

    打包在这里: com.digdes.school.serialization 。 Java中常见的序列化技术。 com.digdes.school.jdbc 。 JDBC范例 com.digdes.school.app 。 一个展示Spring Framework和Hibernate交互的应用程序。 建立专案 该...

    eclipse开发ejb3的ant文件

    例如,你可以使用`@Stateless`、`@Stateful`、`@Singleton`等注解来声明Bean的生命周期,使用`@Remote`或`@Local`定义远程或本地接口,使用`@PersistenceContext`和`@PersistenceUnit`管理实体关系。这使得EJB3比其...

    Example_JPA:使用Maven的JPA示例项目

    &lt;persistence-unit name="example_jpa_unit"&gt; &lt;provider&gt;org.hibernate.jpa.HibernatePersistenceProvider &lt;property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/&gt; ...

    EJB3.0资料的总结

    1. **注解驱动(Annotation-Based)**:EJB 3.0引入了大量的注解,如`@EJB`,`@PersistenceContext`,`@PersistenceUnit`等,使得开发者无需编写XML配置文件,可以直接在代码中声明依赖和配置。 2. **简化API**:...

    EJB3.0实例教程服务器为JBOSS

    &lt;persistence-unit name="myPU" transaction-type="JTA"&gt; &lt;provider&gt;org.hibernate.ejb.HibernatePersistence &lt;class&gt;com.example.MyEntity&lt;/class&gt; &lt;/persistence-unit&gt; ``` ##### 6.2 JBoss 数据...

    《Grails权威指南》中的bookmarks工程代码

    - 领域类通过继承`grails.persistence.Entity`或使用注解`@grails.persistence.Entity`来声明。 - 可以通过映射字段、定义关系(一对一、一对多、多对多)等方式灵活操作数据库。 4. **Grails插件系统**: - ...

Global site tag (gtag.js) - Google Analytics