繁体   English   中英

Hibernate DDL表动态创建

[英]Hibernate DDL table Dynamic creation

我有一个spring boot项目,我正在使用hibernate将我的实体映射到DB,但是现在我有了一个新的要求:我需要能够在DB中动态创建表,没有任何映射(到目前为止)。

有谁知道一些框架,帮我处理这个: - 我想执行SQL或类似的(ddl)来创建我的表 - 我需要处理连接管理

我被告知弹簧数据,但我需要对此有所了解。

一个例子:想象一下,我有一个可供客户使用的服务,例如:

class DBHACKService {
  void executeSQL(String ddl).
}

客户端调用它:

new DBHackService.executeSQL ("create table mytable (name varchar)");

在这个方法中我可以对sql做一些操作。 问题是:哪种是将其发送到DBEngine的最佳方式。

再次感谢

提前致谢。

您可以查看DdlUtils ,您可以随时使用所需的更改来提供它,并将更改反映在数据库中。 格式与数据库无关,因此您不必担心自己的可移植性。

我不知道它是如何更新的。

如果你喜欢Groovy

查看有关数据库初始化的Spring Boot文档。

最简单的选择是将schema.sql文件放在类路径的根目录中(例如在src/main/resources )。 此文件中的任何DDL都将作为应用程序启动的一部分运行。 Spring Boot的一个JDBC示例显示了这一点。

第二,更复杂的,选择是使用像一个数据库迁移工具Liquibase迁飞 迁移工具的优势在于,随着应用程序需求的变化,它可以更容易地发展数据库模式。 春季启动有两个小示例应用程序Liquibase迁飞

如果您希望动态创建架构,我想这应该对您有所帮助。

Hibernate:基于实体类自动创建/更新db表

您可以使用jdbc发出ddl语句来动态创建表。 将查询保存在某个xml文件中。 所以它仍然是通用的。 在配置文件上有一个watcher服务,使用新查询更新时刻文件,你可以触发所需的jdbc调用

你希望用sql作为参数传递什么。

如果你想验证sql,一个选项就是触发查询,如果你得到一个异常,这意味着传递参数存在一些问题。

如果你想解析sql查询,那么你可以使用jSqlParser。 http://jsqlparser.sourceforge.net/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM