Java DB Таблица наследования? - PullRequest
       9

Java DB Таблица наследования?

1 голос
/ 04 декабря 2009

Можно ли сделать наследование таблиц в Java DB? У нас есть сложная модель кода, которая использует наследование и также выиграет от наследования БД.

Возможно ли это? Это кажется невозможным из-за быстрого поиска в Google или поиска в NetBeans.

Приветствия

Ответы [ 3 ]

1 голос
/ 05 декабря 2009

Я предполагаю, что под «таблицей Java DB» вы подразумеваете стандартную таблицу SQL, доступ к которой осуществляется через JDBC, а не продукт под названием «таблица Java DB». Ответ на ваш вопрос: нет, вы не можете напрямую выполнять наследование в SQL. Это не ограничение Java, JDBC или любого инструмента объектно-реляционного отображения, а проблема с самим SQL. Однако, используя Hibernate / JPA / JDO, это довольно легко подделать, используя несколько различных методов.
Итак, ответ на вопрос «Могу ли я легко представить свою действительно классную иерархию наследования объектов в реляционной базе данных с использованием Java?» есть, для подходящих определений легко, да.

0 голосов
/ 04 декабря 2009

Во-первых, ваш вопрос довольно расплывчат в деталях. Чем конкретнее вы, тем лучше сообщество может поддержать вас. Поэтому я собираюсь угадать, какую поддержку вы ищете, и надеюсь, что она поможет.

Если вы используете что-то вроде JPA / Hibernate, вы можете создавать классы с аннотацией @MappedSuperClass. Когда классы сканируются, связь между «родительской» таблицей и дочерней таблицей будет реализована. В качестве быстрого примера:

@MappedSuperClass
public class Foo {
    private Long id;
    // ... getters and setters
}

@Table("BAR")
@AttributeOverride(name="id" column=@Column(name = "BAR_ID"))
public class Bar extends Foo {
    // ... map your table
}

Если вы заметите, класс Foo не обязательно должен представлять таблицу. Он может просто предоставлять некоторые из общих полей, которые охватывают несколько таблиц (типичные поля, такие какified_by ,ified_date и т. Д.). Если Bar имеет идентификатор, такой как BAR_ID, вы можете переопределить родительский элемент аннотацией @AttributeOverride.

Несмотря на то, что я делал все с аннотациями, я уверен, что вы можете изучить и XML.

0 голосов
/ 04 декабря 2009

Я не уверен, правильно ли я понял ваш вопрос ....: - (


Используя решение ORM, такое как Hibernate (или JPA), вы можете иметь абстрактный (или нет) объект, который имеет несколько подклассов, каждый из которых сопоставлен с другой таблицей.

Преимущества:

  • Вы определяете только один раз для каждого столбца и повторно используете его для всех таблиц.
  • Вы можете иметь некоторый код, который является общим для всех этих объектов, если он опирается на общую часть.
  • Hibernate также позволяет писать общие запросы
    (пример: «select * from Object» возвращает всю базу данных, так как она соответствует всем вашим сущностям).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...