gpt4 book ai didi

java - GreenDao 和实体继承

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:07 25 4
gpt4 key购买 nike

我的任务是在 Android 操作系统上为我的应用程序创建磁盘缓存(它是某种信使)。我想将消息存储在数据库中,但遇到了存储不同类型消息的问题(目前有 5 种类型的消息,每种类型都有自己的字段,它们都扩展了基类)

GreenDao documentation说:

注意:目前不可能有另一个实体作为父类(super class)(也没有多态查询)

我计划拥有与基类几乎 1 比 1 的实体,除了一列 - 原始二进制或 json 数据,每个子类都可以在其中写入任何它需要的内容。

我的问题是:

  1. GreenDao 在这种情况下是好的解决方案吗?是否有任何解决方案可以让您不必担心继承 - 以及它们在效率方面的成本是多少。
  2. 如何将数据“序列化”到这样的字段(我应该覆盖什么方法或者我应该把我的代码放在哪里,这将完成所有必要的事情
  3. 如何为 GreenDao 提供正确的构造函数以“反序列化”Json 或二进制文件以正确的类实例
  4. 我应该使用反射——还是只使用 switch/case 来找到正确的构造函数(只有 5 种类型的构造函数是可能的)——反射在这种情况下会“消耗”多少?

最佳答案

如果你真的需要继承 greendao 不是我的选择,因为它不支持它。但我认为你可以不继承:

您可以设计一个具有鉴别器列(消息类型)和二进制或文本列(数据)的实体。然后,您可以使用抽象工厂根据消息类型从数据创建所需的对象。

如果转换很复杂,我会把它放在一个单独的类中,否则我会把它作为一个方法放在 keep 部分。

请注意,如果您确实有很多消息,这种设计可能会降低您的速度,因为单独的表会减少索引大小。谈论索引:如果您想稍后通过数据列的某些属性访问消息,那您就完蛋了,因为您无法在其上放置索引。

关于java - GreenDao 和实体继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33923328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com