|
|
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Есть таблица Users в БД с полями: Код: plsql 1. 2. 3. Содержимое таблицы: id пользователя, его имя и какое-то поле с данными большого объёма. (Полей на самом деле большое, плюс связи с другими таблицами и т.п., но мысль ясна) Задачи: 1. Получать по конкретному id информацию о пользователе - т.е. выборка по всем полям и связанным таблицам. 2. Получать из БД список пользователей (скажем, 200 записей) - просто id и имя. Не хочется каждый раз, тащить большие объёмы данных и кучу связанных полей для списка пользователей, где нужны только имя и id. id Соответственно, завожу 2 Entity: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но, не совсем понимаю, как их замапить на БД. Если как @Inheritance(strategy = InheritanceType.SINGLE_TABLE), то везде в примерах говорится, что User должен быть абстрактным и не создавать инстансов. @MappedSuperclass не отображается на таблицу вообще, как я понял. Как настроить работу, что бы можно было иметь два не абстрактных класса, замапленных на одну таблицу, но отображающих полные и неполные данные. Или эта задача решается вообще как-то иначе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:55 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Сурикат, @DiscriminatorColumn + SINGLE_TABLE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:05 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Но, ведь это не разные сущности, по сути. Т.е. даже если вкорячить в таблицу DiscriminatorColumn, то... по какому критерию их разделять? И даже если и придумать критерий, то это получается, что на каждую предметную сущность, у нас будет в таблице по 2 записи? А смысл? Тогда уж, логичнее OneToOne зависимость и слить в отдельную таблицу всё кроме id и name. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:13 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Сурикат, А вы хотели чтобы одна и та же запись в разные моменты чтения выдавала бы разные классы сущности? Зачем?? Ведь User не каститься к UserData. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:20 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Сурикат, - блоб полей нет? Фотографий 3500x3500 пикселей? Тогда вообще не парься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:21 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Тут дело, скорее просто в отсутствии опыта работы с ORM и незнании особенностей. В JDBC, я понимаю, что могу вручную составить запрос, указав определённые поля и просто отсечь объёмные поля, которые не нужны в данный момент. Ну и, ручной маппинг в JDBC как раз решит вопрос с заполнением полей в разных классах. Но в JPA, кроме как сделать наследование на ум особо ничего не пришло. (ну, разве что, да - сделать отдельную таблицу со связью OneToOne и ленивую загрузку). В интернетах ответа не нашёл, затем и пошёл на форум :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:25 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Petro123Сурикат, - блоб полей нет? Фотографий 3500x3500 пикселей? Тогда вообще не парься. BLOB ленивым свойством решается. Нафига городить ассоциацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:41 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
СурикатТут дело, скорее просто в отсутствии опыта работы с ORM и незнании особенностей. Ну, а с проектированием БД всё в порядке? Нафига на одну таблицу два типа? СурикатВ JDBC, я понимаю, что могу вручную составить запрос, указав определённые поля и просто отсечь объёмные поля, которые не нужны в данный момент. Ширина выборки на производительность имеет совершенно никакого влияния. Вы занимаетесь привентивной оптимизацией. СурикатНу и, ручной маппинг в JDBC как раз решит вопрос с заполнением полей в разных классах. Вы не рассказали как вы собираетесь объект типа User хранить в переменной типа UserData. С точки зрения одной таблицы они идентичны. А в коде вы решили эту идентичность нарушить. Сурикат Но в JPA, кроме как сделать наследование на ум особо ничего не пришло. Что бы на ум что-то пришло надо определиться с тем какую именно проблемы мы пытаемся решить. Если нужно ограничить выборку по ширине, то пожалуйста JPQL: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:47 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczPetro123Сурикат, - блоб полей нет? Фотографий 3500x3500 пикселей? Тогда вообще не парься. BLOB ленивым свойством решается. Нафига городить ассоциацию. +1. Был не уверен) тогда вообще проблема высосана из пальца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:53 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Сурикат, Нашел ещё другое решения. По-хорошему такую проблему нужно решать ленивостью. Ваш подход ленивость убивает на корню. Нужно явно загружать данные другим запросом, чтобы получить все детали. А для ленивости в JPA существует аннотация @Basic. Только учтите что ленивость простых свойств требует инструментации класса на уровне байт-кода. Не знаю как современные реализации JPA, но Hibernate ещё несколько лет назад не умел инструментировать сущности на лету. Нужно было в сборке прописывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 18:11 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВы занимаетесь привентивной оптимизацией. Да, похоже на то. :) Blazkowicz По-хорошему такую проблему нужно решать ленивостью. Ваш подход ленивость убивает на корню. Согласен. Ленивость тут походит гораздо лучше и, в общем, то даже проще. Спасибо за дельные советы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 20:49 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczШирина выборки на производительность имеет совершенно никакого влияния. Вы занимаетесь привентивной оптимизацией. Покрывающие индексы? Нет, не слышал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 10:49 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Локшин МаркПокрывающие индексы? Нет, не слышал. Лолшто? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 11:07 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
MS опять впереди всех))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 11:22 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Petro123MS опять впереди всех))) Такая оптимизация есть не только у MS. Например здесь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 11:27 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Локшин Марк то ...а если бы у рыбы была шерсть, то в ней водились бы блохи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 11:29 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Локшин Марк, это только подтверждает исключение из правил для остальных СУБД). А по сабжу, эти мелочи что ты привёл...они не ведь не имеют к сабжу отношения. Теория построения СУБД это одно, а суровая реальность построения Ынтирпрайз - другое. IMHO Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 12:03 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Petro123Локшин Марк, это только подтверждает исключение из правил для остальных СУБД). Oracle, DB2 . Petro123Теория построения СУБД это одно, а суровая реальность построения Ынтирпрайз - другое. Медленно работает? Да мы еще 10 серверов возьмем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 12:38 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Petro123MS опять впереди всех))) Да ладно тебе стебаться, индексное покрытие обеспечивает любая мало-мальски адекватная СУБД, вплоть до . Однако, IMHO если человек выбрал ORM, то вопросы как оптимальнее что-то сделать с БД его точно не волнуют. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 12:41 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевОднако, IMHO если человек выбрал ORM, то вопросы как оптимальнее что-то сделать с БД его точно не волнуют. :) скажу больше. Если человек выбрал Java, то вопросы Мелочные в СУБД решаются не на уровне программиста. И это замечательно. Есть бизнес и требования бизнеса. А есть НИИИ для создания СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 12:46 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньеввыбрал ORM ты прав - вопрос про JPA а не экзотику в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 12:49 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Локшин МаркМедленно работает? Да мы еще 10 серверов возьмем. ты не понял. В Java сидят практики с большой зарплатой. А не теоретики. Вот когда ты ссылку на практику из ветки Оракла покажешь. Тогда тут будут шевелиться и и ВОЗМОЖНО включать в свою практику. Пока там в ветке IMHO ноль твоих ссылок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 12:58 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Petro123Вот когда ты ссылку на практику из ветки Оракла покажешь. Тогда тут будут шевелиться и и ВОЗМОЖНО включать в свою практику. Пока там в ветке IMHO ноль твоих ссылок. Заблуждайтесь дальше, ваше право. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 14:06 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевОднако, IMHO если человек выбрал ORM, то вопросы как оптимальнее что-то сделать с БД его точно не волнуют. :) Если более-менее быть в курсе и понимать что и как работает, то можно и с ORM задумываться над оптимальностью. но это же Petro123мелочи что ты привёл... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 14:09 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39326511&tid=2123600]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 368ms |

| 0 / 0 |
