Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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 为SQL设计一种精简的面向对象查询语言_Java_Oop_Orm - Fatal编程技术网

Java 为SQL设计一种精简的面向对象查询语言

Java 为SQL设计一种精简的面向对象查询语言,java,oop,orm,Java,Oop,Orm,鉴于以下类别: class People { ..... String getName(); int getAge(); ... } 我想查询我的数据库中所有年龄超过20岁的人。所以我想写一些像getPeopleAGE>20的东西。。简而言之,我想编写一个易于阅读的面向对象查询。我们可以使用复杂的查询选择条件,但为了简单起见,我们将其限制为单个变量。在我的设置中,我将通过将面向对象查询转换为关系查询,从SQL中获取此细节。我需要设计这个,但想不出干净的东西。如果你有耐心,请进一步阅读 这个老

鉴于以下类别:

class People {
.....
String getName();

int getAge();
...
}
我想查询我的数据库中所有年龄超过20岁的人。所以我想写一些像getPeopleAGE>20的东西。。简而言之,我想编写一个易于阅读的面向对象查询。我们可以使用复杂的查询选择条件,但为了简单起见,我们将其限制为单个变量。在我的设置中,我将通过将面向对象查询转换为关系查询,从SQL中获取此细节。我需要设计这个,但想不出干净的东西。如果你有耐心,请进一步阅读

这个老问题可能框架不好

我正在用Java和SQL数据库工作。在我们的例子中,数据库查询通常非常简单。其目的是用面向对象语言编写查询,然后通过通用模块将这些查询转换为sql查询

现在,插入、删除对象可以很容易地设计为-public void deleteDBObject obj。但是问题在于查询,我需要您的帮助来设计它。所以假设我们有一个account对象,我想在数据库中插入一个account对象——在这种情况下,我将调用public void insertAccount account;如果我想根据特定的帐户类型检索所有帐户对象,或者其帐户名不以字符串str开头,该怎么办?理想情况下,我们应该能够查询account类中返回值的所有公开行为

我可以看到需要一个查询生成器,但无法提出一个简洁的合同,可以很容易地使用

附言-我尝试这样做只是为了提高我的理解力。因此,提到hibernate或任何orm可能不是我的答案。我曾尝试在git上挖掘一些源代码,但通常它们都太大了:

编辑: Matt在他的评论中提出了规范设计模式,这在某种程度上确实简化了事情。我一直面临的一个问题是以一种易于阅读的方式来表述查询。假设C1 C2 C3 C4是一些条件,那么这个模式允许我使用通用门轻松地编写任何复杂的查询-和,或者,不是以一种简单的方式。
现在的问题是对这种个别情况进行建模,比如C1。所以,如果有一个account类有一个函数public int yearsSinceAccountWasOpend,现在我想检索至少有7年历史的帐户,那么我应该怎么做呢?一些注释技巧?

我的第一个想法是使用with some translator从规范对象生成WHERE子句。现在再具体不过了,这是一个针对广泛问题的广泛建议;实际上它看起来很不错。。让我再仔细研究一下,看看是否合适。。谢谢。看起来您正在尝试构建一个DSL,以便以面向对象的方式通过SQL进行抽象。一个起点可能是-它有一个非常流畅的API,你可以借用一些想法,也许可以在此基础上进行构建。