我的 webapp 有一个 war 文件,当我将 war 从 Tomcat 复制到 webapps 文件夹时(假设 Tomcat 正在运行),我需要在 MySQL 中生成数据库表。
有没有办法做到这一点,你能帮我提供一些相关信息吗?
附言。这是一个非常简单的 webapp,只使用 JDBC,我不使用任何 ORM 框架。 JDBC 可以吗?
最佳答案
如果您只想更新架构,但不想引入像 Hibernate 这样重量级的东西,有一些不错的选择:
Flyway 要求您编写 SQL 以在应用程序的不同版本之间迁移。它根本不生成任何 DDL(用于修改模式的 SQL)。它只是运行你给它的 SQL。如果您熟悉 SQL,并且希望能够使用您的数据库提供的所有功能,我强烈建议您使用它。
启动迁移的代码可以放入 ServletContextListener 中。 Flyway Application Integration 上给出了可以在那里使用的示例代码页面。
Liquibase 通过读取描述将数据库升级到最新模式所需的模式更改的 XML 文件来工作。这些更改按顺序应用。这意味着您的架构和更改更有可能移植到其他数据库,但可以说更难利用特定于您的数据库的功能。
Liquibase 提供了自己的 ServletContextListener 供您使用。查看ServletListener文档中的页面。
如果你确实想引入一个 ORM,你可以看看:
- Hibernate - 具有很多功能(以及相当多的依赖项)的 ORM
- EclipseLink - 以前是 Oracle TopLink。这似乎比 Hibernate 更精致,但功能更少。
关于java - 将 war 部署到 Tomcat 时生成数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9036817/