Руководство по использованию JPA / Eclipselink / Генераторы сущностей JPA - PullRequest
1 голос
/ 09 декабря 2011

Я хотел бы получить отзыв об использовании JPA в нескольких (более 3) случаях таблицы.

  1. Как вы получаете записи из нескольких соединенных таблиц? Использование оператора JPA Join или получение коллекций итерация и выборка следующего набора коллекций с внешним ключом и так далее? Второй способ, кажется, предпочтительнее, но реальная боль, а также неэффективная.

  2. Способ, которым eclipselink генерирует отношения, состоит в том, что происходит множество каскадов. Кроме того, даже простой внешний ключ устанавливается как объект, а не как простой целочисленный идентификатор. Другими словами, чтобы извлечь X.fk_of_table_Y, мне нужно вызвать два метода

X.getFKTableY (). GetFKtableY ()

Первая функция возвращает объект сопоставленного класса, а вторая возвращает целое число. Упс, не слишком ли это неэффективно? Зачем вам нужно загружать объект из другой таблицы, когда вы просто хотите идентификатор моей собственной таблицы?

Как ты это делаешь?

  1. Вы предпочитаете использовать методы, сгенерированные eclipselink, или вы обычно пишете свои собственные? По сути, это то же самое, что и (1) jsut, но этот я спрашиваю для контекста eclipselink.

  2. Какие инструменты существуют помимо EclipseLink для генерации кода? В случае, если я могу использовать свои собственные запросы соединения JPA для отношений (и если это хороший способ сделать это), я бы хотел, чтобы отображение отношений было удалено из файлов сущностей, которые EclipseLink не будет делать. Есть ли инструмент, который генерирует только классы сущностей, но не их отношения?

  3. Если я захочу автоматизировать генерацию сущностей на ночной основе (или всякий раз, когда изменяется db), через Eclipselink, что мне нужно будет делать? Изменить источник?

Простите мой английский, я могу написать немного лучше.

1 Ответ

0 голосов
/ 09 декабря 2011

Извините за короткий ответ, это с телефона. Во-первых, в EclipseLink возможно иметь как целочисленный идентификатор FK, так и сам объект как различные свойства; просто дайте обоим названиям столбцов, но пометьте только один из них как обновляемый и вставляемый. Вы сможете установить связь с одним из свойств, но не обоими.

Во-вторых, я использую как сопоставления сущностей, так и объекты DAO со сложными запросами JPA для доступа к сущностям, с той разницей, что я использую запросы для множественных объединений и функций агрегации или когда необходима предварительная выборка, и я использую сопоставления сущностей при обходе граф сущностей. Тем не менее, везде необходим сравнительный анализ - у меня был сложный запрос, который был быстрее (60 мс против 300 мс) при разложении на отображения сущностей.

...