解决persistence.xml配置文件修改存放路径的问题

解决persistence.xml配置文件修改存放路径的问题

本文主要介绍如何解决修改persistence.xml配置文件存储路径的问题,具有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。

目录

有两种persistence-XML配置文件扩展(persistence-unit)来修改persistence.xml配置文件的存储路径。

persistence.xml配置文件修改存放路径

今天在集成Spring、struts2和Spring Data JPA时,遇到了以下问题,现记录下来,以供参考。

!-定义实体管理工厂bean -

bean id= entityManagerFactory class= org . spring framework . ORM . JPA . localitymanagerfactorybean

属性名称=persistenceUnitName 值=demo /

属性名称= persistenceXmlLocation 值=classpath:persistence.xml /

/bean

根据上面的代码配置实体管理工厂时,会抛出一个异常,大意是找不到persistence.xml文件。

因为我的persistence.xml文件与src放在同一级别的resource文件夹中,所以默认情况下,我将转到src下的META-INF文件夹来加载配置文件。

解决办法有两种

1、第一种:

将persistence.xml文件移动到src/META-INF/并手动创建它(如果它不存在);

2、第二种:

org . spring framework . ORM . JPA . localentitymanagerfactorybean

代替

org . spring framework . ORM . JPA . localcontainereentitymanagerfactorybean

如果想知道实现原理,请自行查看源代码。

持久化persistence.xml配置文件

在EJB,实体Bean应用程序由实体类和persistence.xml文件组成。persistence.xml文件位于jar文件的META-INF目录中。persistence.xml文件指定实体Bean使用的数据源和实体管理器对象的默认行为。

让我们看一下最简单的persistence.xml文件来理解它的配置。

坚持

!name属性用于定义持久性单元的名称(Name是必需的,空值是合法的)

持久性单元名称=foshanshop

!-JTA-数据源用于指定持久性提供程序使用的JTA数据源的全局JNDI名称(可选)

Java:/default mysqlds/JTA-data-source

!-供应商特定属性(可选)-

性能

!-自动输出模式以创建DDL语句-

属性名=hibernate.hbm2ddl.auto 值=create-drop/

/属性

/持久性单元

/持久性

Persistence-unit:可以有一个或多个节点,每个persistence-unit节点定义持久内容名称、使用的数据源和持久产品的专有属性。名称:该属性定义了持久性名称。Jta-data-source:该节点指定实体Bean使用的数据源的JNDI名称。如果应用程序在jboss下发布,数据源名称必须以java:/为前缀,并且数据源名称区分大小写。属性:该节点用于指定持久性产品的属性。

对于properties节点,应该注意每个应用服务器使用不同的持久性产品。比如jboss用hibernate,weblogic10用kodo。因为jboss采用hibernate,hibernate有一个属性 hibernate.hbm2ddl.auto ,指定发布实体Bean时是否同步数据库结构。如果“hibernate.hbm2ddl.auto”的值设置为“create-drop”,则在发布和卸载实体时,将自动创建和删除相应的数据库表。

当jboss服务器启动或关闭时,也会触发实体Bean的发布和卸载。

Ps:如果你的表已经存在,你想保留数据,可以在发布实体Bean时将hibernate.hbm2ddl.auto的值设置为none或者update。以后为了实体bean的变化能够在数据表中体现出来,建议使用update,这样当实体bean增加一个属性的时候,相应的字段就可以同时添加到数据表中。

扩展(persistence-unit)

持久化单元包含的属性有:

持久性单元范围内的实体类为实体类或库实体类的数据源应用程序使用的事务类型提供持久性。

持久性单元可以打包成WAR文件、EJB-JAR文件、EAR文件的一部分,或者直接打包成应用程序可以直接使用的JAR文件。

持久性单元的范围取决于persistence.xml文件的位置。一般来说,IDE可以使用boot接口正确放置persistence.xml的位置比如,使用IDE为EJB模块创建持久化单元,persistence.xml文件会放在EJB模块的src/conf目录下,当你打包模块时,persistence.xml文件会放在EJB JAR文件的META-INF目录下。这样,持久化单元的范围就是EJB JAR文件中的类。

PS: persistence.xml文件的位置决定了持久性根。持久性的根是包含META-INF目录的JAR文件或目录(假设persistence.xml位于此处)。

以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

解决persistence.xml配置文件修改存放路径的问题