0

我试图搜索 JPA 数据源存储位置的默认设置以及如何指定特定位置,但没有找到任何东西。

我发现在 Tomcat 下,数据库保存在一个目录中,其中数据源的名称位于 Tomcat 目录的 bin/ 中,这让我感到困惑有两个原因:

  1. 因为数据库不是可执行文件,不应驻留在 bin/
  2. 因为所有 webapps 共享相同的 bin/ 目录,所以两个具有相同名称但属于两个不同 webapps 的数据源会发生冲突。

如果我理解正确,数据源代表实际的 JPA 底层数据库,而持久性单元将存储在数据源中的实体组合在一起。所以我应该寻找数据源的属性而不是持久性单元的属性。

==编辑==

到目前为止,我已经在 persistence.xml 中声明了一个持久性单元名称,我已经在 META-INF/context.xml 中添加了这个持久性单元的配置,其中包含以下内容

<Context path="/exampleWeb">
   <ResourceLink global="ds/exampleDS" name="ds/exampleDS" type="javax.sql.DataSource"/>
</Context>

我认为要使用的数据库类型取决于我拥有的库,唯一可用的是eclipselink-2.4.1.jar。

在 web.xml 里面我有:

  <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>ds/exampleDS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

==编辑 2==

在Tomcat的server.xml里面我有

<Resource 
auth="Container" 
driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
maxActive="20" 
maxIdle="10" 
maxWait="-1" 
name="ds/exampleDS" 
type="javax.sql.DataSource" 
url="jdbc:derby:exampleDB;create=true" 
  />
4

1 回答 1

1

你的问题不是很清楚。Tomcat 和 JPA 都没有附带数据库。

您应该选择要使用的数据库(PostgreSQL、MySQL、Oracle、DB2、HSQLDB 等),安装它并配置模式(并在安装期间选择必须存储数据的位置),以及然后使用数据库的 URL 配置 Tomcat 和/或 JPA。

看起来您正在使用一个轻量级数据库,该数据库将其数据存储在当前目录中,该目录恰好是该Tomcat/bin目录,因为这是启动 Tomcat 的地方。这是特定于您选择的数据库和配置的情况,根本不是标准情况。

如果您需要有关如何使用 Tomcat 和 JPA 配置数据库的帮助,请告诉我们您正在使用哪个数据库,并向我们展示当前配置。

于 2013-05-26T13:46:40.533 回答