用JPA创建数据库?

Kok*_*oko 11 java mysql database eclipse jpa

当我创建(使用JPA - java持久性api)持久性单元然后持久性实体时,它们会自动在数据库中创建相应的表和字段.

我是否也可以自动创建数据库(如果它不存在)?

我的目标是:

我的意思是它在数据库内部创建了表和字段,但没有创建数据库,如果之前没有创建数据库(手工) - 一切都失败了.因此,在运行项目之前(如果需要,将自动生成表和字段)我首先必须创建(手动)数据库.

我使用:Eclipse(Java,Hibernate,Flex/Air),MySQL

感谢所有信息

sta*_*ker 11

必须手动创建数据库(Fortunatly你没有问为什么;-).这类似于用于连接数据库服务器的用户/密码组合,必须已存在才能连接到数据库.


Ben*_*ing 5

我对这个问题的解决方案是在创建实体管理器之前添加以下内容:

  Connection connection =
      DriverManager.getConnection("jdbc:mysql://localhost/?user=" + DB_USER);
  Statement stmt = connection.createStatement();
  stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS " + DB_NAME);
Run Code Online (Sandbox Code Playgroud)

您需要用 try/catch 块包围它,或者向它所在的函数添加 throws SQLException 表示法。因此,例如,这是我的initEntityManager功能:

public static void initEntityManager() throws SQLException {
    Connection connection =
        DriverManager.getConnection("jdbc:mysql://localhost/?user=" + DB_USER);
    Statement stmt = connection.createStatement();
    stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS " + DB_NAME);
    emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
    em = emf.createEntityManager();
}
Run Code Online (Sandbox Code Playgroud)