天天看點

JPA的配置檔案persistence.xml參數詳解JPA的配置檔案persistence.xml參數詳解

JPA規範要求在類路徑的META-INF目錄下放置persistence.xml, 檔案的名稱是固定的,配置模闆如下:

Xml代碼

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.1"

 xmlns="<a target=_blank href="http://xmlns.jcp.org/xml/ns/persistence">http://xmlns.jcp.org/xml/ns/persistence</a>" xmlns:xsi="<a target=_blank href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"

 xsi:schemaLocation="<a target=_blank href="http://xmlns.jcp.org/xml/ns/persistence">http://xmlns.jcp.org/xml/ns/persistence</a>

 <a target=_blank href="http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd</a>">

<persistence-unit name="persist-unit"

  transaction-type="RESOURCE_LOCAL">

  <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

  <!-- All persistence classes must be listed -->

  <class>boa.framework.entity.CustomerEntity</class>                                                                                 <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>

   <validation-mode>CALLBACK</validation-mode>

  <properties>

   <!-- Provider-specific connection properties -->

   <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:exampleDB;create=true" />

   <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />

   <property name="javax.persistence.jdbc.user" value="" />

   <property name="javax.persistence.jdbc.password" value="" />

   <property name="javax.persistence.schema-generation.database.action"

    value="drop-and-create" />

   <property name="javax.persistence.schema-generation.create-source"

    value="script" />

   <property name="javax.persistence.schema-generation.create-script-source"

    value="META-INF/create-script.sql" />

   <property name="eclipseink.logging.level" value="INFO" />

  </properties>

 </persistence-unit>

</persistence>

<!--

      Name屬性用于定義持久化單元的名字 (name必選,空值也合法);

      transaction-type 指定事務類型(可選)

-->

<persistence-unit name="unitName" transaction-type="JTA">

   <!-- 描述資訊.(可選) -->

   <description> </description>

   <!-- javax.persistence.PersistenceProvider接口的一個實作類(可選) -->

   <provider>   </provider>

   <!-- Jta-data-source和 non-jta-data-source用于分别指定持久化提供商使用的JTA和/或non-JTA資料源的全局JNDI名稱(可選) -->

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

   <non-jta-data-source> </non-jta-data-source>

   <!-- 聲明orm.xml所在位置.(可選) -->

   <mapping-file>product.xml</mapping-file>

   <!-- 以包含persistence.xml的jar檔案為基準的相對路徑,添加額外的jar檔案.(可選) -->

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

   <!-- 顯式列出實體類,在Java SE 環境中應該顯式列出.(可選) -->

   <class>boa.framework.entity.CustomerEntity</class>

   <!-- 聲明是否掃描jar檔案中标注了@Enity類加入到上下文.若不掃描,則如下:(可選) -->

   <exclude-unlisted-classes>true</exclude-unlisted-classes>

   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>

    <!-- hibernate.hbm2ddl.auto= create-drop / create / update -->

      <property name="eclipseink.logging.level" value="INFO" />

   </properties>

</persistence-unit>