JPA

本文详细介绍了Java Persistence API (JPA) 2.0规范下persistence.xml文件的配置方法,包括必要的属性设置及可选配置项,并解释了各配置项的作用。

persistence.xml文件必须定义在classpath路径下的META-INF文件夹中。

  我们看看基于Hibernate提供的一个比较完整的JPA2.0的persistence.xml文件。

  persistence.xml: 

<?xml version="1.0" encoding="UTF-8"?>
   <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" 
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
               http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
      
      <!--必须要有name属性,不能为空 -->
       <persistence-unit name="jpaPU" transaction-type="RESOURCE_LOCAL">
            <!--可选 -->
           <provider>org.hibernate.ejb.HibernatePersistence</provider>
           <!--可选 -->
           <jta-data-source>java:/DefaultDS</jta-data-source>
           <!--可选 -->
           <mapping-file>ormap.xml</mapping-file>
           <!--可选 -->
           <jar-file>MyApp.jar</jar-file>
           <!--可选 -->
           <class>org.acme.Employee</class>
           <!--可选 -->
           <shared-cache-mode>ENABLE_SELECTOVE</shared-cache-mode>
           <!--可选 -->
           <validation-mode>CALLBACK</validation-mode>
           
           <!--厂商的特定属性 -->
           <properties>
              <!--配置Hibernate方言 -->
              <property name="hibernate.dialect" 
              value="org.hibernate.dialect.MySQL5Dialect" />
              <!--配置数据库驱动 -->
              <property name="hibernate.connection.driver_class" 
              value="com.mysql.jdbc.Driver" />
              <!--配置数据库用户名 -->
              <property name="hibernate.connection.username" value="root" />
              <!--配置数据库密码 -->
              <property name="hibernate.connection.password" value="root" />
              <!--配置数据库url -->
              <property name="hibernate.connection.url" 
              value="jdbc:mysql://localhost:3306/jpa?
              useUnicode=true&amp;characterEncoding=UTF-8" />
              <!--设置外连接抓取树的最大深度 -->
              <property name="hibernate.max_fetch_depth" value="3" />
              <!--自动输出schema创建DDL语句 -->
              <property name="hibernate.hbm2ddl.auto" value="update" />    
           </properties>
      </persistence-unit>              
</persistence>

  

  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"

  要注意使用的是2.0规范

  name  

  JPA2.0规范要求每一个持久化单元必须有一个名字,不能为空。即persistence-unit name="manager1"的name不能为空。

  transaction-type

  使用的事务类型。有JTA和RESOURCE_LOCAL两种类型可以选择。在JavaEE环境中默认为JTA,在JavaSE环境中默认为RESOURCE_LOCAL。当在persistent.xml文件使用<jta-data-source>,默认就是JTA事务,使用<non-jta-data-source>,默认就是使用RESOURCE_LOCAL事务。这两种事务的区别不在这里讨论。                

  provider

  EJB Persistence provider的一个实现类。如果不是使用多个厂商的 EJB Persistence实现,是不需要定义的。

  mapping-file

  指定映射文件的位置

  jar-file

  指定要解析的jar。jar中所有注解的类、包和所有的hbm.xml都会被添加到persistent-unit的配置中。主要用在JavaEE环境中。

  exclude-unlisted-classes

  不检查jar中加了@Entity注解的类。

  class

  明确指定要映射的类

  shared-cache-mode

  缓存模式。加了@Cacheable注解的默认为二级缓存。有四种模式:ALL-缓存所有实体;NONE-禁止缓存;ENABLE_SELECTIVE-如果加了缓存的标识,是默认的选选        项;DISABLE_SELECTIVE- enable caching unless explicitly marked as  @Cacheable(false) (not  recommended)

  validation-mode

  实体的验证模式,默认是激活的。当一个实体在创建、更新,在实体发送到数据库前会被进行验证。CALLBACK: entities are validated on creation, update and deletion. If no Bean Validation provider  is present, an exception is raised at initialization time.

  properties

  配置厂商的一些特定属性。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值