Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向Java的数据库抽象语言_Java_Database - Fatal编程技术网

面向Java的数据库抽象语言

面向Java的数据库抽象语言,java,database,Java,Database,问题是:我需要在我的应用程序上抽象我的数据库交互。问题是JPA对我不起作用,因为表/模式是动态的,我只在运行时知道它们。我曾想过动态创建类,但我正在研究这种方法的性能问题,因为每次插入都会导致使用反射实例化类。我曾考虑过使用XML进行建模,但似乎速度较慢,管理起来有点困难 我在找什么? 我正在寻找一些不需要映射到对象的中间层语言(类似于JPQL[Java持久性查询语言])。一些抽象模式/目录和表创建以及使用select子句进行查询的语言 提前感谢。我很确定hibernate有一种无对象模式,在这

问题是:我需要在我的应用程序上抽象我的数据库交互。问题是JPA对我不起作用,因为表/模式是动态的,我只在运行时知道它们。我曾想过动态创建类,但我正在研究这种方法的性能问题,因为每次插入都会导致使用反射实例化类。我曾考虑过使用XML进行建模,但似乎速度较慢,管理起来有点困难

我在找什么? 我正在寻找一些不需要映射到对象的中间层语言(类似于JPQL[Java持久性查询语言])。一些抽象模式/目录和表创建以及使用select子句进行查询的语言


提前感谢。

我很确定hibernate有一种无对象模式,在这种模式下,实体是使用映射来描述的。而且,如果您愿意,可以在运行时设置hibernate工厂。我相信这些功能的结合可以满足您的需要


也就是说,我在上一份工作中也使用过类似的系统。我们需要一个从数据层抽象出来的功能层。数据层本身不是“动态的”,只是在编译时不知道。我们最终构建了一个系统,该系统加载了一个配置文件,该文件定义了db模式,并可以根据该模式生成sql。我们希望对生成的sql有相当高的控制级别,因此我们最终构建了自己的sql构建库,我们将其开源为。SqlBuilder最适合使用内存中的db模式(我们从配置文件构建)生成查询。

我想我还不清楚这个概念。您想在事先不了解数据库模式的情况下动态访问表并创建查询吗?这真是一种糟糕的设计味道,除非你正在制作一个反向工程工具。不,问题是我需要动态创建模式和生成表。所以我无法事先知道模式和表,因为它们当时不存在。为此,我希望有一个抽象概念,因此,如果我更改了基础数据库,我保证一切都能正常工作。使用数据库是一项要求,还是您只是假设将使用一个数据库?我专门寻找数据库。它和想象中的JPQL一样简单,但没有对象。这让我回到我前面的问题:您需要使用数据库吗?为什么要存储数据?数据库通常用于共享数据。要访问数据,用户需要知道模式。如果您在创建数据库时不知道模式,那么其他人也不知道,所以。。。数据库有什么好处?每次你的应用程序运行时,你都会创建一个只写的数据库。它支持DDL和DML吗?OP也需要创建表。我也看到了,但在我看来,我需要在XML文件中定义映射。@Dave-不知道。我自己还没有实际使用过动态功能。@user669634-几乎任何解决方案都需要您以某种方式进行配置。hibernate使用xml。如果其他解决方案也使用xml,也不会感到惊讶。(顺便说一句,您不需要使用文件,您可以在运行时创建XMLDOM并将其直接传递给配置类)。你还有其他用户吗?