persistence.xml文件属性的含义是什么

时间:2017-04-05 23:57:47

标签: java xml hibernate

我正在研究hibernate框架,我想知道在哪里可以获得有关我们需要包含在文件persistence.xml中的de属性的信息

我搜索了属性提供者,但我没有获得具体信息,sombody帮助我:D

<persistence 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"
version="2.0">
<persistence-unit name="tarefas">
    <!-- provedor/implementacao do JPA -->
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <!-- entidade mapeada -->
    <properties>
        <!-- dados da conexao -->
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa" />
        <property name="javax.persistence.jdbc.user" value="root" />
        <property name="javax.persistence.jdbc.password" value="root" />
        <!-- propriedades do hibernate -->
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />
        <!-- atualiza o banco, gera as tabelas se for preciso -->
        <property name="hibernate.hbm2ddl.auto" value="update" />
    </properties>
</persistence-unit>

1 个答案:

答案 0 :(得分:3)

我在学习Spring和Hibernate的书中发现了这一点。书名是由 Nicholas S. Williams 编写的 Web应用程序专业Java 。我认为这对很多人都有帮助。

  

创建持久性配置:

     

要使用您创建的实体,您必须定义持久性单元。这样做很简单。创建一个   persistence.xml文件与部署描述符没有什么不同,但选项少得多   担心。持久性配置文件的根元素是<persistence>。这个   元素可以包含一个或多个<persistence-unit>元素。没有其他元素   在<persistence>内。 <persistence-unit>有两个属性:name指定名称   持久性单元和事务类型指示此持久性单元是否使用Java   事务API(JTA)事务或标准本地事务。   您必须指定一个名称,这是您在代码中找到持久性单元的方式。如果没有指定,   transaction-type缺省为Java EE应用程序服务器中的JTA和Java中的RESOURCE_LOCAL   SE环境或简单的Servlet容器。但是,为了防止意外行为,最好   始终显式设置此值,而不是依赖于默认值。   <persistence-unit>包含以下内部元素。它们都不是必需的(所以   <persistence-unit>可能是空的);但是,您必须指定您在中使用的任何元素   以下顺序:

     
      
  • <description>包含此持久性单元的有用说明。虽然它有   更容易阅读持久性文件,它没有语义价值。
  •   
  • <provider>指定javax.persistence.spi的完全限定类名   .PersistenceProvider实现用于此持久性单元。默认情况下,当你   查找持久性单元,API将使用类路径上的第一个JPA提供程序。您   可以包含此元素来强制要求特定的JPA提供者。

  •   
  • 您可以使用<jta-data-source><non-jta-data-source>(但不能同时使用两者)   使用JNDI DataSource资源。您只能使用<jta-data-source>   事务类型是JTA;同样,您可以仅使用<non-jta-data-source>   如果transaction-type是RESOURCE_LOCAL。指定DataSource会导致持久性   单位将该DataSource用于所有实体操作。

  •   
  • <mapping-file>指定XML映射文件的类路径相对路径。如果你不这样做   指定任何<mapping-file>,提供程序查找orm.xml。您可以指定多个   <mapping-file>元素使用多个映射文件。

  •   
  • 您可以使用一个或多个<jar-file>元素来指定JAR文件或JAR文件   JPA提供程序应扫描映射注释的实体。任何@Entity,@ Embeddable,   @ javax.persistence.MappedSuperclass,或@javax.persistence.Converter类   找到的内容会添加到持久性单元中。

  •   
  • 您可以使用一个或多个<class>元素来表示特定的@Entity,@ Embeddable,   应该添加到持久性单元的@MappedSuperclass或@Converter类。   您必须使用JPA注释注释一个或多个类。

  •   
  • 使用<exclude-unlisted-classes /><exclude-unlisted-classes>true</exclude-unlisted-classes>表示提供者不应忽略类   使用<jar-file><class>指定。省略<exclude-unlisted-classes>或使用   <exclude-unlisted-classes>false</exclude-unlisted-classes>导致JPA   提供程序扫描JPA注释类的持久性文件的类路径位置。如果   persistence.xml位于JAR文件中,该JAR文件(仅限该JAR文件)被扫描   对于课程。如果persistence.xml位于基于目录的类路径位置(例如/   WEB-INF / classes),扫描该目录(并且只有该目录)的类。之前   Hibernate 4.3.0和Spring Framework 3.2.5,指定此元素的值为false   被错误地解释为真。

  •   
  • <shared-cache-mode>表示如何在持久性单元中缓存实体(如果是JPA   provider支持缓存,这是可选的)。 NONE禁用缓存,而ALL启用   缓存所有实体。 ENABLE_SELECTIVE意味着只有实体注释了@javax   .persistence.Cacheable或@Cacheable(true)(或在orm.xml中标记为可缓存)   被缓存。 DISABLE_SELECTIVE导致除注释之外的所有实体的缓存   @Cacheable(false)(或在orm.xml中标记为不可缓存)。默认值,   未知,意味着JPA提供商决定有效默认值是什么。过冬   ORM默认为ENABLE_SELECTIVE,但依赖于此是不可移植的。

  •   
  • <validation-mode>表示是否以及如何将Bean Validation应用于实体。   NONE表示未启用Bean Validation,而CALLBACK表示提供程序   验证插入,更新和删除的所有实体。 AUTO具有CALLBACK的有效值   如果类路径上存在Bean Validation提供程序,则有效值为NONE(如果不存在)   Bean Validation提供程序存在于类路径中。如果启用验证,则为JPA提供程序   配置新的Validator以验证您的实体。如果您已配置特殊   Spring Framework Validator包含您的自定义本地化错误代码,JPA提供程序   忽略它。因此,最好将验证模式设置为NONE并使用Bean Validation   在调用持久层之前。

  •   
  • <properties>提供了一种指定其他JPA属性的方法,包括标准JPA   属性(例如JDBC连接字符串,用户名和密码或模式生成   设置)以及特定于提供程序的属性(例如Hibernate设置)。你指定   一个或多个使用嵌套元素的属性,每个属性都有一个名称和值   属性。

  •   

Nicholas S. Williams, Professional Java for Web Applications, (Indianapolis, Indiana: John Wiley & Sons, Inc., 2014), pg 584-585