JPA:创建数据库然后连接

时间:2011-11-28 14:17:25

标签: java java-ee jpa

我想在应用程序部署过程的第一次创建数据库。我正在使用JPA。所以我考虑两种方式。

1)我的persistence.xml中有完整的连接描述:

<property name="mysql.jdbc.user" value="root"/>
<property name="mysql.jdbc.password" value=""/>
<property name="mysql.jdbc.url" value="jdbc:mysql://localhost:3306/DB"/>
<property name="mysql.jdbc.driver" value="com.mysql.jdbc.Driver"/>

当应用程序启动时,它无法连接到数据库并报告此问题,建议您转到安装页面。在此安装页面中,我使用显式SQL查询启动数据库创建。

2)我连接到数据库服务器:

<property name="mysql.jdbc.user" value="root"/>
<property name="mysql.jdbc.password" value=""/>
<property name="mysql.jdbc.url" value="jdbc:mysql://localhost:3306/"/>
<property name="mysql.jdbc.driver" value="com.mysql.jdbc.Driver"/>

应用程序通知我它是第一个连接并将我重定向到安装页面。在数据库安装期间,应修改persistence.xml。必须更改属性mysql.jdbc.url一个声明数据库名称的新值赋值。

您如何看待这个?怎么做?

3 个答案:

答案 0 :(得分:3)

我几乎可以肯定你不能使用JPA来创建数据库。

您需要手动创建它,或者尝试使用Maven等构建工具创建它。

答案 1 :(得分:1)

您可以使用persistence.xml创建数据库。例如对于JBoss,这个属性如下所示:

<property name="hibernate.hbm2ddl.auto" value="create-drop"/>

另请查找其他可能的值。

答案 2 :(得分:0)

您可以做的是添加一个配置为在应用程序启动时运行(一次)的servlet。此servlet可以检查数据库是否已存在,如果不存在,则以编程方式创建它。检查this question's answers以了解如何为MySQL实现这一目标。如果您有正在运行的服务器,则可以获取连接并运行SQL以创建数据库。之后,可以使用JPA实现的正确属性自动创建必要的表等(如Nulldevice为Hibernate所示)。

你甚至可以让servlet找到persistence.xml文件,因为它应该在某个特定的位置,并解析它以找出几个属性,比如URL,以确保它们只在一个地方定义。 / p>

我不确定的是,JPA是否只会在运行servlet后尝试连接(并可能创建表),或者如何强制执行此操作。为此,您可能必须检查JavaEE应用程序的生命周期。它也可能取决于Application Server供应商的实现。