在Java中存储和检索copmosit对象

时间:2013-10-07 10:43:37

标签: java hibernate composition

我有超过2个类,它们有大约7个相同的字段,它们将类似于java部分中的以下内容:

public abstract class IBase {
   private String commonField1;
   private String commonField2;
   private String commonField3;
   private EMyType type; // type of the object: MY_TYPE_1 or MY_TYPE_2
   // ...

   // + constructor and getters/setters
}

public class BaseImpl1 extends IBase {
   private int base1specific1;
   private int base1specific2;
   // ...

   // + constructor and getters/setters
}

public class BaseImpl2 extends IBase {
   private int base2specific;
   private String base2specific2;
    // ...

   // + constructor and getters/setters
}

我有两个问题:

  1. 在数据库中反映这两个对象的最佳方法是什么?
  2. 我应该如何通过Hibernate检索它们?

2 个答案:

答案 0 :(得分:1)

使用Morphia,您可以使用@Entity(someCollectionName)标记您的界面。然后,当您查询这些类型时,您可以使用datastore.createQuery(BaseImpl1.class).filter(“classname =”,BaseImpl1.class.getName())来检索该特定子类。

答案 1 :(得分:0)

我将解决问题3.其他问题非常普遍。

在mongo中,您可以将东西(文档)存储在集合中。没有架构或表格。您可以将两个子类型存储在同一个集合中,并查询它们的公共属性或子类型属性。从数据库中反序列化它们时,您可以根据它们具有的属性集来确定如何反序列化它们。