Использование Java/быть в спящем режиме взаимодействует через интерфейс по объектам

Я использую annoted, в спящем режиме, и я задаюсь вопросом, возможно ли следующее.

Я должен настроить серию интерфейсов, представляющих объекты, которые могут быть сохранены, и интерфейс для основного класса базы данных, содержащего несколько операций для сохранения этих объектов (... API для базы данных).

Ниже этого я должен реализовать эти интерфейсы и сохранить их с, в спящем режиме.

Таким образом, я буду иметь, например:

public interface Data {
  public String getSomeString();
  public void setSomeString(String someString);
}

@Entity
public class HbnData implements Data, Serializable {
  @Column(name = "some_string")
  private String someString;

  public String getSomeString() {
    return this.someString;
  }
  public void setSomeString(String someString) {
    this.someString = someString;
  }
}

Теперь, это хорошо работает, вид. Проблема прибывает, когда я хочу вложенные объекты. Интерфейс того, что я хотел бы, достаточно легок:

public interface HasData {
  public Data getSomeData();
  public void setSomeData(Data someData);
}

Но когда я реализую класс, я могу следовать за интерфейсом, как ниже, и добраться, ошибка от В спящем режиме, говоря, что это не знает класс "Данные".

@Entity
public class HbnHasData implements HasData, Serializable {
  @OneToOne(cascade = CascadeType.ALL)
  private Data someData;

  public Data getSomeData() {
    return this.someData;
  }

  public void setSomeData(Data someData) {
    this.someData = someData;
  }
}

Простое изменение состояло бы в том, чтобы изменить тип от "Данных" до "HbnData", но это, очевидно, повредит интерфейсную реализацию и таким образом сделает абстракцию невозможной.

Кто-либо может объяснить мне, как реализовать это способом, что это будет работать с, в спящем режиме?

14
задан wen 9 May 2010 в 22:07
поделиться

1 ответ

Интерфейс, который я обычно использую, - это Data Access Object, или DAO. Используя Java generics, я могу написать его всего один раз; Hibernate позволяет написать реализацию тоже всего один раз:

package persistence;

import java.io.Serializable;
import java.util.List;

public interface GenericDao<T, K extends Serializable>
{
    T find(K id);
    List<T> find();
    List<T> find(T example);
    List<T> find(String queryName, String [] paramNames, Object [] bindValues);

    K save(T instance);
    void update(T instance);
    void delete(T instance);
}
4
ответ дан 1 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: