Hibernate 1: M отношение, порядок строк, таблица постоянных значений и параллелизм - PullRequest
0 голосов
/ 06 апреля 2010

таблица A и B должны иметь отношение 1: M

a и b добавляются во время выполнения приложения, поэтому A создал, затем произнесите 4 Б созданы. Каждый экземпляр B должен прийти по порядку, чтобы я мог позже извлеките их в том же порядке, в котором я их добавил.

Приложение будет веб-приложением, работающим на Tomcat, поэтому 10 экземпляров могут работать одновременно.

Итак, мой вопрос:

1) Как сохранить порядок вставки, чтобы я мог извлечь B экземпляров, на которые A ссылается в в том же порядке, как я их настаивал. Это сложно, потому что мы добавляем в коллекцию, а затем она сохраняется (я прав?). Итак, это зависит от того, как Hibernate сохраняет его, что если он изменит порядок в том, что мы добавили экземпляры? Я видел что-то вроде LIST вместо SET при описании отношений, это то, что мне нужно?

2) Как добавить 3-й столбец в B, чтобы я мог различать экземпляры, что-то вроде СЕКС (M, F, U) в таблице B. Нужна ли мне специальная таблица, или есть и простой способ описания констант в Hibernate. Что вы рекомендуете?

3) Говоря о параллелизме, какие методы вы рекомендуете использовать? Там не должно быть никаких столкновений в БД и, как вы видите, могут быть некоторые, если строки не вставлены (добавлено PK) правильно где он вызывается без задержек?

1 Ответ

3 голосов
/ 06 апреля 2010

Как сохранить порядок вставки, чтобы я мог извлечь экземпляры B, на которые ссылается A в том же порядке, в котором я их сохранил. (...)

Используйте упорядоченную коллекцию как List. Обратите внимание, что списки могут отображаться двумя разными способами:

  • как упорядоченные списки, заказ не материализуется в базе данных
  • в виде индексированных списков, порядок материализован в базе данных

См. Раздел 2.2.5.3.4. Проиндексированные коллекции (Список, Карта) для деталей.

Как добавить 3-й столбец в B, чтобы я мог различать экземпляры, что-то вроде SEX (M, F, U) в таблице B. Нужна ли мне специальная таблица, или есть и простой способ описания констант в Hibernate. Что вы рекомендуете?

Используйте enum на B и сопоставьте с @Enumerated. Смотрите этот предыдущий ответ .

Говоря о параллелизме, какие методы вы рекомендуете использовать? В БД не должно быть никаких коллизий, и, как вы видите, некоторые из них могут легко возникнуть, если строки не будут вставлены (добавлено PK) там, где он вызывается без задержек?

Хм ... Используйте транзакции и стратегию блокировки, которая соответствует вашим потребностям (но, честно говоря, я не уверен, что понял вопрос).

...