gpt4 book ai didi

java - 使用 JPA 时 persistence.xml 中的属性标签

转载 作者:行者123 更新时间:2023-12-02 03:28:57 27 4
gpt4 key购买 nike

我是 JPA 新手,并使用 Hibernate 作为 JPA 提供程序。我发现我们需要META-INF/persistence.xml配置文件。

我成功创建了一个简单的 Java 程序来使用 JPA 将数据保存在数据库中。

一切都很好,当我查看persistence.xml时我开始怀疑了文件以便更好地理解它。

示例如下:

<persistence-unit name="test-jpa" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
<property name="hibernate.connection.url" value="jdbc:h2:tcp://localhost/~/test"/>
<property name="hibernate.connection.username" value="sa" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>

下面是读取配置的Java代码:

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("test-jpa");

疑点如下:

  1. 我们如何知道 Hibernate 是 JPA 提供者?是通过查看文件中的属性标签来推断的吗?

  2. 在配置文件中,有很多<property>标签,它们是预定义的,可以出现在文件中(对于给定的 JPA 提供程序)还是我们可以随机添加任何属性?谁读过这些<property>标签?

最佳答案

一个JPA提供商将提供可以告诉您所有这些的文档。你的不是吗?我会感到惊讶。

  1. 您应该有 <provider>持久化单元中的元素来定义要使用的提供程序,否则它将使用您正在运行的环境的默认值(在 JavaSE 中,您需要在 CLASSPATH 中拥有 1 个且只有一个 JPA 提供程序,在JavaEE 服务器将有自己的默认值)。

  2. 它们是特定于提供商的。任何前缀为 javax.persistence 的属性将是JPA标准。前 4 个发布的内容为 javax.persistence您应该使用的变体。

关于java - 使用 JPA 时 persistence.xml 中的属性标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38371075/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com