首页 > 解决方案 > 什么是支持@Inheritance(strategy = InheritanceType.SINGLE_TABLE)的Android ORM?

问题描述

我正在开发一个 android 聊天应用程序,我有几种类型的消息继承自一个抽象类。我想获取不同类型聊天消息的列表。我想我需要一个带有 SINGLE_TABLE 策略的继承支持的 ORM。是否有支持此功能的适用于 Android 的 ORM?或者,也许您会建议如何在没有 SINGLE_TABLE 支持的情况下使用 ORM 来解决这个问题?

例子:

public abstract class AbstractMessage implements MessageListContent, Serializable, Comparable<AbstractMessage> {

    public enum Status {
        DELIVERED,
        SENDING_AND_VALIDATION,
        NOT_SENDED,
        INVALIDATED
    }

    private SupportedMessageListContentType supportedType = SupportedMessageListContentType.UNDEFINED;
    private boolean iSay;
    private long timestamp;
    private Status status = Status.SENDING_AND_VALIDATION;
    private String transactionId;
    private String companionId;

    // getters and setters
    //...
 }

 public class BasicMessage extends AbstractMessage {
    private String text;
    private transient Spanned htmlText;

    // getters and setters
    //...
}

public class TransferMessage extends AbstractMessage {
    private BigDecimal amount;

    // getters and setters
    //...
}

标签: androidorm

解决方案


我不知道你是否对 Android 中的 ORM 了解很多,但是,Android 中最著名的两个 ORM 是 Room 和 Realm。这两个可以实现你想要的。但是,不要相信我的领域,因为我只会陈述我的朋友告诉我的关于领域的内容。

首先,Room 在 SQLite 中运行,在 NoSQL 中运行 Realm。现在,我假设您对继承和多态非常了解,这个概念也可以应用于 SQL。也就是说,考虑到您选择 SQLite。现在对于领域,这是一个不同的故事。我的朋友告诉我,您的模型的多态性与数据库的多态性有关。虽然,我非常怀疑,但我不喜欢领域,所以不要相信我的话。

对于选择数据库,我会坦率地告诉您选择 SQLite 并帮助您做出决定,这里有一个简单的网站,其中列出了 SQL 或 NoSQL 更好的原因:http://www.nosql-vs-sql。 com/


推荐阅读