将复杂对象保存到数据库

时间:2015-01-05 00:21:24

标签: java database class interface

我想将此对象保存到db,但我不知道该怎么做..

 

    public class Board {
      private String name;
      private Sticker sticker;
     Board(String name, Sticker sticker){
      this.name=name;
      this.sticker = sticker;
    }

    }

    public interface Sticker {
      public void doSomething();
    }

    public class FreeSticker implements Sticker {
      @Override
      public void doSomething(){
       System.out.println("I'm freeSticker");
      }
    }
    public class ProSticker implements Sticker {
      @Override
      public void doSomething() {
        System.out.println("I'm proSticker");
      }
    }

现在我想用set name和一些Sticker(比如FreeSticker)将我的新Board对象保存到Database。怎么样? name很简单,因为在每个db中我们都有String类型,但是Sticker呢?我知道,我可以为FreeSticker和ProSticker创建另一个表,但是它很复杂,例如我们有2个以上的Sticker实现..我不是要求超级解决方案,但请给我一些教程的链接它,因为我无法找到任何相关信息。谢谢:))

1 个答案:

答案 0 :(得分:0)

您的表应包含每个州值的列。在你的情况下有两个,加上通常很好的包括一个唯一的ID字段作为主键。那么,在PostgreSQL中......

CREATE TABLE board (
    id       SERIAL NOT NULL,
    name     text,
    sticker  boolean);

或者,如果您计划/期望有多个贴纸。

CREATE TABLE sticker (
    id       SERIAL NOT NULL,
    name     text);

CREATE TABLE board (
    id       SERIAL NOT NULL,
    name     text,
    sticker  int REFERENCES sticker(id) NOT NULL);