Java 在运行时按需创建架构和表

Java 在运行时按需创建架构和表,java,database,spring,hibernate,spring-boot,Java,Database,Spring,Hibernate,Spring Boot,正如标题所示,我需要创建一个应用程序(最好是Spring Boot),它将根据用户输入创建模式和表。基本上,将向客户机提供一个rest端点,客户机将以json格式上传数据模型。我将在运行时解析json并构造db工件(模式和表)。创建所有表后,向客户机提供一个rest端点(具有唯一标识符),以便对其模式执行CRUD操作 我目前正在考虑的方法是- 在部署有权创建新模式和数据库的应用程序之前,在数据库中创建超级用户 创建准备好的语句以根据需要调用架构/表创建。准备好的语句将有占位符来获取模式名和表定义

正如标题所示,我需要创建一个应用程序(最好是Spring Boot),它将根据用户输入创建模式和表。基本上,将向客户机提供一个rest端点,客户机将以json格式上传数据模型。我将在运行时解析json并构造db工件(模式和表)。创建所有表后,向客户机提供一个rest端点(具有唯一标识符),以便对其模式执行CRUD操作

我目前正在考虑的方法是-

  • 在部署有权创建新模式和数据库的应用程序之前,在数据库中创建超级用户

  • 创建准备好的语句以根据需要调用架构/表创建。准备好的语句将有占位符来获取模式名和表定义

  • 在正确的身份验证之后,允许用户上传json格式的数据模型定义

  • 清除json并调用模式/表创建准备语句

  • 我想问的几个问题-

  • 由于所有这些DB操作都将从单个超级用户的帐户调用,因此安全吗

  • 模式和表将使用本机SQL查询而不是Hibernate的ORM功能来实现。它安全/高效吗

  • 对于CRUD操作,是否可以将db连接从超级用户切换到在前面步骤中创建的特定于客户端的模式?或者我应该继续使用同一个超级用户进行CRUD操作吗? 如果可以使用Hibernate/Spring引导在运行时切换模式,那就太好了

  • 我想要的是这个问题的一般解决方法。我不需要任何代码

  • 典型的web应用程序已经具有删除所有用户的所有数据的权限
  • JPA使您的查询速度变慢,而不是变快。JPA可以帮助缓存,但您似乎并不需要它
  • 是的,在Spring Boot中可以有多个数据源。看看这个例子:

  • 请注意,您的数据库可能不喜欢有数百万个表。查询规划、维护作业、备份等都会受到性能惩罚。基本上,数据库不是为您的用例设计的。

    1。对于权限,我指的是绑定在application.properties中的Admin用户,可以为请求服务的相应客户端使用单个用户还是创建DB用户?2.如果不是JPA,是否建议使用JDBC并从中启动创建/选择查询?