【问题标题】:Saving this kind of an object in a database将此类对象保存在数据库中
【发布时间】:2015-03-20 12:19:37
【问题描述】:

我有一个需要保存在数据库中的对象。 到目前为止,我一直在使用 MySQL,但是对于某些结构(LinkedList、Hashmap 等)真的很难使用它困难...

public class Group {
    private String name = null;
    private LinkedList<Question> track = null;
    private Date startTime = null;
    private Date endTime = null;
    private HashMap<Question, Bitmap> imagePerQuestion;

    public String getName() {
        return name;
    }

    public LinkedList<Question> getTrack() {
        if (startTime == null)
            //First time that you get the track it assigns the startTime
            startTime = new Date();
        return track;
    }

    public Date getStartTime() {
        return startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setFinish(){
        if (endTime == null && startTime != null){
            endTime = new Date();
        }
    }

    public Group(LinkedList<Question> track){
        this.track = track;
        this.imagePerQuestion = new HashMap<>();
    }
}

要说的很重要的一点是,我的客户端使用 java,但服务器(处理数据库)可能会使用 php。

如果使用 php 真的很难/不可能,我会很高兴听到一个基于 java 的 web 框架可以完成这项工作。

【问题讨论】:

  • 将 PHP 类保存在数据库中是不正常的,除非在特殊情况下。这并不难,只是不寻常。通常,您将数据(如整数、字符串等)保存在数据库字段中。
  • 这是一个 java 类,例如使用 LinkedList 在 mysql 上工作非常困难,它不是为此而构建的。但我需要以某种方式存储这个对象......
  • 啊,抱歉,如果是 PHP,它看起来几乎一样。在 PHP 中,您可以使用 serialize() 存储对象。请参阅:php.net/manual/en/function.serialize.php 您可以尝试查看 Java 中是否有等价物。
  • 我想过这个选项,但它的主要问题是服务器使用PHP而客户端使用Java,并且两种不同语言之间的序列化不一样。这就是为什么我也在考虑使用基于 Java 的 Web 框架。
  • 是的,如果在 PHP 和 Java 之间交换对象将非常困难。它们可能看起来几乎相同,但肯定有许多细微差别。我的建议是不要交换或存储对象,而只交换或存储用任何一种语言重建对象所需的数据。

标签: java php database web-frameworks object-oriented-database


【解决方案1】:

您可以考虑使用 NoSQL 数据库,但这取决于您的要求。 通常,NoSQL 数据库(如 Redis、HBase...)的查询能力有限。

您是否只需要存储您的对象或对它们执行复杂的查询?

【讨论】:

  • 我也需要对它们进行查询,如果我不这样做,我只会存储它们的序列化版本...例如,我需要一个能够推送新的查询imagePerQuestion Hashmap 的键和值
【解决方案2】:

查看这篇关于 PHP 和 ORM 的帖子: PHP developer looking for solutions equivalent to Java EE architecture

也许你也应该考虑一个 REST 服务,这样 PHP 就不需要直接处理对象了。

【讨论】:

    【解决方案3】:

    没有多少事情是不可能的。您可以使用 Hibernate 或 EclipseLink 之类的 JPA 实现,通过 ORM(对象关系映射)将对象保存到数据库中。这可以创建您也可以在 PHP 中读取的数据库结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      相关资源
      最近更新 更多