文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 06:53

关注

这篇文章主要介绍如何解决persistence.xml配置文件修改存放路径的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

整合Spring、struts2和Spring Data JPA的时候遇到以下问题,现记录以供参考。

<!-- 定义实体管理工厂bean --><bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"><property name="persistenceUnitName" value="demo" /><property name="persistenceXmlLocation" value="classpath:persistence.xml" /></bean>

按以上代码配置实体管理工厂时将会抛出异常,大意就是找不到persistence.xml文件。

因为我的persistence.xml文件是放在与src同级的resource文件夹内的,而默认会去src下META-INF文件夹加载该配置文件。

解决办法有两种

1、第一种:

将persistence.xml文件移至src/META-INF/下,若不存在该文件夹则手动创建;

2、第二种:

org.springframework.orm.jpa.LocalEntityManagerFactoryBean

改为

org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean

如果要了解实现原理,请自行查看源码。 

持久化persistence.xml配置文件

在EJB中,一个实体Bean应用由实体类和persistence.xml文件文件组成。persistence.xml文件在jar文件的META-INF目录下。persistence.xml文件指定实体Bean使用的数据源及Entity Manager对象的默认行为。

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

<persistence>  <!-- Name属性用于定义持久化单元的名字 (name必选,空值也合法) -->  <persistence-unit name="foshanshop">      <!-- Jta-data-source 用于指定持久化提供商使用的JTA数据源的全局JNDI名称(可选) -->     <jta-data-source>java:/DefaultMySqlDS</jta-data-source>      <!-- 厂商专有属性(可选) -->     <properties>          <!--自动输出schema创建DDL语句 -->      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>          </properties>      </persistence-unit>  </persistence>

对于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能够使用引导界面来正确放置persistence.xml的位置。例如使用IDE为EJB模块(Module)创建的持久性单元,persistence.xml文件将被放在EJB模块的src/conf目录中,当你将模块打包时,persistence.xml文件被放在EJB JAR文件的META-INF目录中。这样持久化单元的作用域就是EJB JAR文件中的类。

ps:persistence.xml文件的位置决定持久化的根(Persistence Root)。持久化的根为JAR文件或者包含META-INF目录(前提是persistence.xml位于此)的目录。

以上是“如何解决persistence.xml配置文件修改存放路径的问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯