问题:我需要在我的应用程序上抽象数据库交互。事情是JPA对我不起作用,因为表/模式是动态的,我只是在运行时知道它们。我想过动态创建类,但我正在研究这种方法的性能问题,因为每次插入都会导致使用反射实例化类。我考虑使用XML进行建模,但似乎也很慢并且有点难以管理。
我在找什么? 我正在寻找一些我不需要映射到对象的中间层语言(类似于JPQL [Java持久性查询语言])。一些使用select子句抽象模式/目录和表创建以及查询的语言。
提前致谢。
答案 0 :(得分:3)
我很确定hibernate有一个无对象模式,其中使用Maps描述实体。并且,如果您愿意,可以在运行时设置一个休眠工厂。我相信这些功能的组合可以满足您的需求。
说,我在上一份工作中使用过类似的系统。我们想要一个从数据层中抽象出来的功能层。数据层本身并不是“动态的”,在编译时就不知道了。我们最终构建了一个系统,该系统加载了一个配置文件,该文件定义了db模式,并可以针对该模式生成sql。我们希望对生成的sql进行相当高级别的控制,因此我们最终构建了自己的sql构建库,我们将其打开为SqlBuilder。 SqlBuilder最适合使用内存数据库模式(我们从配置文件构建)生成查询。