我有一个春天的启动项目,我使用Hibernate映射我的实体DB,但是现在我有一个新的要求:我需要能够动态地创建数据库表,没有任何映射(到目前为止)。
有谁知道一些框架,帮我解决这个问题:-I要执行SQL或类似(DDL)创建我的表-I需要处理与连接管理
有人告诉我春天有关的数据,但我需要一些有关此观点。
一个例子:假设我有提供给客户端的服务,例如:
class DBHACKService {
void executeSQL(String ddl).
}
客户端调用此类似:
new DBHackService.executeSQL ("create table mytable (name varchar)");
在这种方法中,我可以做一些操作的SQL。 现在的问题是:这是将其发送到用到dbengine的最佳途径。
再次感谢
提前致谢。 瑞
你可以看看DdlUtils ,人们可以在任何时间,你需要在运行时,有你的变化反映在DB的变化给它。 格式是独立于数据库的,所以你不必自己操心的便携性。
我不知道如何及时更新它虽然。
如果你喜欢的Groovy 。
看看在春季启动文档数据库初始化 。
最简单的选择是将一个schema.sql
文件中的类路径(例如,在根部src/main/resources
)。 在这个文件中的任何DDL会你的应用程序启动的一部分运行。 一个弹簧启动的JDBC样本显示这个动作。
第二,更复杂的,选择是使用像一个数据库迁移工具Liquibase或迁飞 。 迁移工具的优点是,它使得它更容易演变数据库模式作为应用程序的需求而改变。 春季启动有两个小示例应用程序Liquibase和迁飞 。
如果你想创建架构动态地我想这应该帮助你。
休眠:基于实体类自动创建/更新数据库表
你可以使用JDBC来动态创建表发出DDL statments。 保持查询一些xml文件。 因此,它仍然是通用的。 对配置文件观察者的服务,时刻文件被新的查询更新您可以触发所需的JDBC调用
那你希望与作为参数传递的SQL做。
如果你想验证SQL,一个选择是将火查询,如果你这意味着一个异常有一些问题与传递的参数。
如果你想解析SQL查询,那么你可以使用jSqlParser。 http://jsqlparser.sourceforge.net/