持久化persistence.xml配置文件

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

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

[html] view plain copy

  1. <span style="font-family:'Microsoft YaHei';font-size:14px;"><persistence>
  2. <!-- Name属性用于定义持久化单元的名字 (name必选,空值也合法) -->
  3. <persistence-unit name="foshanshop">
  4. <!-- Jta-data-source 用于指定持久化提供商使用的JTA数据源的全局JNDI名称(可选) -->
  5. <jta-data-source>java:/DefaultMySqlDS</jta-data-source>
  6. <!-- 厂商专有属性(可选) -->
  7. <properties>
  8. <!--自动输出schema创建DDL语句 -->
  9. <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
  10. </properties>
  11. </persistence-unit>
  12. </persistence></span>

persistence-unit: 节点可以有一个或多个,每个persistence-unit 节点定义了持久化内容名称、使用的数据源以及持久化产品的专有属性。

name: 属性定义持久化名称。

jta-data-source: 节点指定实体Bean使用的数据源JNDI名称,如果应用发布在jboss下,数据源名称就必须带有java:/前缀,数据源名称大小写敏感。

properties: 节点用作指定持久化产品的各项属性。

        对于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)

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

  • 在该持久化单元范围(作用域)内的实体类
  • 为实体类提供持久化的持久化提供者(Persistence Provider)或库
  • 实体类的数据源(Data Source)
  • 应用使用的事务类型(Transaction Type)

        持久化单元能够被打包成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位于此)的目录。

原文链接:http://blog.csdn.net/happylee6688/article/details/18657319

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java成长之路

IntelliJ IDEA如何导入Gradle项目

最近学习Gradle,本文来重点介绍一下,如何使用IntelliJ IDEA导入`Gradle项目的一种方法。

77640
来自专栏猿天地

Spring Boot中整合Sharding-JDBC读写分离示例

在我《Spring Cloud微服务-全栈技术与案例解析》书中,第18章节分库分表解决方案里有对Sharding-JDBC的使用进行详细的讲解。

44730
来自专栏Laoqi's Linux运维专列

shell项目-分发系统-expect

37780
来自专栏磨磨谈

Ceph数据盘怎样实现自动挂载

在Centos7 下,现在采用了 systemctl来控制服务,这个刚开始用起来可能不太习惯,不过这个服务比之前的服务控制要强大的多,可以做更多的控制,本节将来...

17410
来自专栏大魏分享(微信公众号:david-share)

Howdy,China!:构建JSF Web Application第一篇

版权说明:本文书写过程中参照了红帽的技术文档;本系列文章中的部分测试代码为红帽公司版权所有,因此不能提供源码文件。

14220
来自专栏IT笔记

SpringBoot开发案例之配置静态资源文件路径

前言 SpringBoot本质上是为微服务而生的,以JAR的形式启动运行,但是有时候静态资源的访问是必不可少的,比如:image、js、css 等资源的访问。 ...

2.4K100
来自专栏Python

linux每日命令(29):chown命令

chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管...

24540
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装和配置OrientDB

OrientDB是一个多模型NoSQL数据库,支持图形和文档数据库。它是一个Java应用程序,可以在任何操作系统上运行。它也完全支持ACID,支持多主复制。

21000
来自专栏崔庆才的专栏

持续集成服务 Travis CI 教程

26750
来自专栏北京马哥教育

linux rpm包管理

一、概要 RPM:RPM Package Manager(rpm软件包管理器)的缩写。它能将编译好的程序打包一个文件或有限的几个文件,可用于实现安装、卸...

60570

扫码关注云+社区

领取腾讯云代金券