在运行时动态创建表和 Java 类

5 java hibernate dynamic-data

我的申请中有一个要求。我的表不会事先定义。

例如,如果用户创建的名称的表单Student,并增加了它的属性,如姓名,不滚,主题类等,然后在运行时,应该有通过名称创建一个表student的列nameroll nosubjectclass等以及其相关类及其 Hibernate 映射文件。

有没有办法这样做?

提前致谢,
Rima Desai

Gre*_*zky 3

这是可能的,但尚不清楚为什么要这样做,因此很难提出任何具体的解决方案。

但一般来说,是的,您可以根据某些输入动态生成数据库表、休眠类和映射。最简单的方法是使用一些模板引擎。我过去使用过Velocity,它非常适合这项任务,但如果您想尝试的话,还有其他方法。

编辑:

根据 OP 说明,更好的方法是使用 XML 来存储用户定义的数据。上述解决方案很好,但无论表单是否更改,都需要重新编译应用程序。如果您不想在每次用户编辑后停止并重新编译,那么 XML 是更好的答案。

为了给您一些先机:

@Entity
public class UserDefinedFormData {
    @Id
    private long id;

    @ManyToOne
    private FormMetadata formMetadata;

    @Lob
    private String xmlUserData;
}
Run Code Online (Sandbox Code Playgroud)

给定表单的定义,保存和加载保存为 XML 的数据将变得很简单。

如果您需要更多说明,请添加评论。