Создание динамических таблиц в Hibernate Template - PullRequest
2 голосов
/ 10 июля 2010

Я импортирую данные биржевых котировок, используя HibernateTemplate + SpringFramework

Формат данных

AAPL,09-Jun-2010 09:00,251.47,251.47,251.39,251.39,640
AAPL,09-Jun-2010 09:01,251.4,251.4,251.05,251.26,6844
INTC,09-Jun-2010 09:00,251.47,251.47,251.39,251.39,640
INTC,09-Jun-2010 09:01,251.4,251.4,251.05,251.26,6844
MSFT,09-Jun-2010 09:00,251.47,251.47,251.39,251.39,640
MSFT,09-Jun-2010 09:01,251.4,251.4,251.05,251.26,6844

У меня есть один класс сущностей, называемый Stock

@Entity
public class Stock implements Serializable {
public Stock() {}

private Long id;
private BigDecimal open;
    .... close,high, low..etc
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
    ....

Моя проблема с этой настройкой заключается в том, что hibernate поместит все в таблицу, называемую «Stock».

Я хочу разделить разные акции в другую таблицу, поэтому с данными выше я получу 3 таблицы (AAPL, MSFT, INTC)

Есть ли простой способ сделать это, не прибегая к написанному от руки SQL-выражению в Hibernate / HibernateTemplate? что-то вроде динамического создания таблицы?

Окружающая среда: - Mysql, Hibernate3.5.3, springframework3.0

Ответы [ 3 ]

2 голосов
/ 10 июля 2010

Я хочу разделить разные акции в другую таблицу, поэтому с данными выше у меня будет 3 таблицы (AAPL, MSFT, INTC)

Затем либо введите наследованиеиерархии (со стратегией JOINED или TABLE_PER_CLASS) и сохраните соответствующий подтип или, возможно, используйте горизонтальное разбиение (хотя это потребует некоторого тестирования, хотя я никогда не делал этого с MySQL и Hibernate).

1 голос
/ 10 июля 2010

Не имея собственных классов для каждого, я не знаю простого способа сделать эти таблицы соответствующим образом.

Сказав это, я бы посоветовал вам пересмотреть свой дизайн и рассмотреть вопрос об использовании более совершенных концепций ОО.

Например, скажем, вы сохранили свой объект / таблицу Stock, но затем у вас был другойобъект, такой как компонент DailyActivity, который содержит дату, открытие, максимум, минимум, закрытие и т. д.

Затем можно указать свой запас как коллекцию объектов DailyActivity.Затем Hibernate может сопоставить их как отношение «один к многим».

Тогда, если вы захотите оценить, как работает MSFT, это станет относительно тривиальным запросом, выбрав запись MSFT из таблицы Stock, выбрав ее объекты DailyActivity на указанный период времени.

0 голосов
/ 10 июля 2010

Я не уверен, что это рекомендуется.В справочных документах предлагается, чтобы свойство называлось hibernate.hbm2ddl.auto

. Есть некоторые предыдущие обсуждения на Hibernate: hbm2ddl.auto = обновление в работе? и Hibernatehbm2ddl.auto возможные значения и что они делают? , что вы также должны посмотреть на

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...