我正在研究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>
答案 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