简单的替代对象关系映射为Android/SQLite的
我在寻找简单的技术越来越OOP和RDBMS的,以很好地协同工作。简单的替代对象关系映射为Android/SQLite的
我想保持尽可能简单,所以没有自动代码生成或ORM包,比如ormlite,但也许只是POJO的,每一个数据库表,与像fetchOne(INT db_row_id)和使用fetchall方法()返回一个游标。
我一直遇到的问题是在连接中查询两个或多个表的方法的位置,因为表示表的POJO必须对其他表具有相当多的知识。
我能想到的唯一的选择是只需要一个类来处理有大概在50-100方法ORM,跨越一个或多个表各尽其查询并返回一个普通的光标。
育!
我并不喜欢我做这件事的方式,但我通常会创建一个代表每个表的类,然后为我的所有访问(CRUD操作)创建“提供者”类。
因此,举例来说,假设我有一个游戏状态类和PlayerInfo类都代表了数据库表。 GameState可能有一个List<PlayerInfo>
。我可以让我的GameStateProvider有能力完成连接并填充我的List<PlayerInfo>
,或者有一个PlayerInfoProvider,并将引用传递给我的GameStateProvider的get方法 - 我通常做后者。代表我的db对象的POJO通常也有一个带有Cursor的构造函数。
我不是爱上了这个解决方案,但它使我的所有类到最低限度的方法,并让他们读,而不是太紧密地结合在一起。
我想保持尽可能简单
的问题是,这不是一个简单的任务。这就是人们使用ORM库的原因,以及为什么这些库如此之大。
也许只是POJO的,每一个数据库表,与像fetchOne(INT db_row_id)和使用fetchall(方法)
我能看到你这个打算。不要去那里!你会结束数英里的意大利面代码。我已经看到了,它并不漂亮。您应该使用ORM库,或者找出某种方式来存储不使用关系数据库的数据。
感谢 - 正如在[本文](http://groups.google.com/group/ormlite-user/browse_thread/thread/49b4681c8a2fe692)中讨论的那样,它仍然不是一个理想的解决方案,我认为我应该使用尽可能使用Android的光标。 – Jodes 2011-04-19 17:32:14
我有很多Java经验,只是不在Android上。 Hibernate或OpenJPA是可行的解决方案吗?还是它们太重,无法在移动设备上运行? – 2011-04-19 21:02:30
由于android运行Dalvik而不是Java Bytecode,因此不需要依赖字节码生成的库。这消除了休眠等。 – 2011-07-26 19:44:19
使用对象数据库作为db4o可能是一种替代方案,它是最简单的代码方式,因为不需要映射。 当然,你根本不会使用SQLite。
这个问题会更适当地问http://programmers.stackexchange.com/; SO通常用于讨论具体代码的具体问题。 – 2013-09-07 17:10:59