2013-10-07 1 views
0

У меня есть более 2-х классов, которые имеют приблизительно 7 те же поля, и это будет иметь следующий вид в Java части:Сохранение и извлечение объектов copmosit в 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 объекта в базе данных?
  2. Как я могу получить их через Hibernate?

ответ

0

Я займусь вопросом 3. Остальные - это очень общие вопросы.

В монго вы храните вещи (документы) в коллекциях. Нет схем или таблиц. Вы можете сохранить оба подтипа в одной коллекции и запросить их общие свойства или свойства подтипа. При десериализации их из базы данных вы можете решить, как десериализовать их, исходя из того, какой набор свойств у них есть.

1

Используя Morphia, вы отметите свой интерфейс с помощью @Entity (someCollectionName). Затем, когда вы запрашиваете эти типы, у вас есть что-то вроде datastore.createQuery (BaseImpl1.class) .filter ("classname =", BaseImpl1.class.getName()) для извлечения именно этого конкретного подкласса.

+0

спасибо большое! Я отмечу, что вы ответите как полезный, но на него ответил только на часть моего вопроса ... – davs

+0

iirc, hibernate будет делать что-то очень похожее, хотя вам может понадобиться дополнительный параметр или аннотация для добавления подклассов в одну таблицу. – evanchooly