我无法在Android上找到如何使用ORM正确处理复杂数据库。我试图找到一个开源项目,看它是如何工作的,但可以找到一个适合我正在寻找的...
几年前我学习了关系数据库,并研究过SQL Server和Oracle数据库。我在设计数据库时学到的第一件事就是避免多次使用相同的数据。我学到的第二件事是在代码中永远不会用SQL做什么。所以我面临着Android和ORM的几个问题,因为看起来你绝对不得不在Android中使用ORM来成为一个优秀的开发人员......
我们举一个例子说,我们在这些建筑物中有100栋建筑物,每个建筑物有50人,所有建筑物都有不同的地址。我想让所有人都有他们的建筑地址。我不能把它放在一个表中,否则相同的字符串将在数据库中多次存在。因为每个地址有50个人,如果我只使用一个表,我将为每个建筑物使用相同的地址字符串50次,所以我创建了另一个只包含建筑物的表,并在这两个表之间建立关系。这是一个微不足道的案例,但我看到很多次Android应用程序在一个或两个表中多次存储相同的数据....如果您复制数据,使用关系数据库有什么意义?
同样,这是一个简单的示例,但是当您有20或30个具有复杂关系的表时,与SQL相比,ORM样式中的查询很快就会变得不可读。因此,ORM通常不支持所有SQL连接类型。然后你使用SQL原始查询但是使用ORM有什么意义,因为你不能使用对象映射,因为你没有返回一个表,你可以映射到一个类但是查询的结果...或者可能有我不明白的东西。如果不使用关系对象映射优势或使查询难以维护,那么使用ORM有什么意义呢?
我看到了很多代码,其中ORM用于在多个表中获取数据,然后使用代码进行过滤和连接部分...如果必须在以下情况下使用关系数据库有什么意义呢?代码?实际上几年前做的事情看起来更糟糕......但现在我在Android上看了很多次......
另一种解决方案是在数据库中创建一个View并将我的对象映射到该视图。我可以使用SQL的强大功能和ORM的关系对象映射的强大功能。但是有几个ORM不支持Views,就像GreenDao一样,据我所知,它是目前使用最多的ORM之一......
我可以在这里找到的所有例子都没有处理复杂的数据库或者有这种不好的做法。或者至少它被认为是多年来的坏习惯......它改变了吗?
那么在Android上处理“复杂”数据库的最佳方法是什么?