从数据库元数据创建动态持久性模型

时间:2015-12-11 10:22:25

标签: java database jpa

我们有一个文档管理应用程序,其中一部分是自定义文档表单,供客户输入文档元数据并将其保存到他的数据库中。为了创建这些表单,我们开发了第三方专有应用程序,它负责表单的设计(字段在哪里,它们是什么类型等)然后采用这种设计并创建动态表来在数据库中表示它。每个表格由3个表格表示:

  • Table_A包含有关表单字段的信息。此表具有标准格式,表中的每一行代表表单的一个字段。
  • Table_B包含有关设计的信息。此表还具有标准格式,每行包含有关在运行时动态创建表单时每个字段位置的信息。
  • Table_C包含有关用户在系统中保存文档时输入的元数据的信息。此表没有标准格式。它由第三方软件动态创建,其columns在数量和类型上都是动态的。在一种形式中,column_A可能是整数,而另一种形式column_A可能是日期。一个表可能有10列,而另一个表可能有70个。这完全取决于它所代表的形式。

我们目前遇到的问题是我们想要将JPA添加到我们的项目中。但是,为了工作,JPA要求所有持久性模型都在xml中或通过注释定义,这对我们来说是不可能的,因为我们的应用程序事先并不知道每个表单的Table_C设计。当我们想要从该表中检索数据时,我们实际查询Table_A,找出有多少字段,然后根据结果动态构建查询并查询其元数据Table_C。这种技术不可能在JPQL中执行,因为它需要具体的对象来创建查询。我的问题是,是否可以使用DatabaseMetaData和Java的Reflection API动态创建持久性模型?

TL; DR:是否可以通过阅读JPA并使用Java的Reflection API在运行时创建DatabaseMetaData持久性模型?

0 个答案:

没有答案