powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA и наследование
25 сообщений из 108, страница 1 из 5
JPA и наследование
    #39326485
Сурикат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица Users в БД с полями:

Код: plsql
1.
2.
3.
id
name
someBigData



Содержимое таблицы: id пользователя, его имя и какое-то поле с данными большого объёма. (Полей на самом деле большое, плюс связи с другими таблицами и т.п., но мысль ясна)

Задачи:
1. Получать по конкретному id информацию о пользователе - т.е. выборка по всем полям и связанным таблицам.
2. Получать из БД список пользователей (скажем, 200 записей) - просто id и имя. Не хочется каждый раз, тащить большие объёмы данных и кучу связанных полей для списка пользователей, где нужны только имя и id.
id
Соответственно, завожу 2 Entity:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Entity
public class User {
    private Long id;
    private String name;
}

@Entity
public class UserData extends User {
    private String someBigData;
}



Но, не совсем понимаю, как их замапить на БД. Если как @Inheritance(strategy = InheritanceType.SINGLE_TABLE), то везде в примерах говорится, что User должен быть абстрактным и не создавать инстансов. @MappedSuperclass не отображается на таблицу вообще, как я понял.

Как настроить работу, что бы можно было иметь два не абстрактных класса, замапленных на одну таблицу, но отображающих полные и неполные данные. Или эта задача решается вообще как-то иначе?
...
Рейтинг: 0 / 0
JPA и наследование
    #39326496
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сурикат,

@DiscriminatorColumn + SINGLE_TABLE
...
Рейтинг: 0 / 0
JPA и наследование
    #39326502
Сурикат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Но, ведь это не разные сущности, по сути. Т.е. даже если вкорячить в таблицу DiscriminatorColumn, то... по какому критерию их разделять? И даже если и придумать критерий, то это получается, что на каждую предметную сущность, у нас будет в таблице по 2 записи? А смысл? Тогда уж, логичнее OneToOne зависимость и слить в отдельную таблицу всё кроме id и name.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326509
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сурикат,

А вы хотели чтобы одна и та же запись в разные моменты чтения выдавала бы разные классы сущности? Зачем?? Ведь User не каститься к UserData.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326511
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сурикат,
- блоб полей нет? Фотографий 3500x3500 пикселей? Тогда вообще не парься.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326520
Сурикат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Тут дело, скорее просто в отсутствии опыта работы с ORM и незнании особенностей. В JDBC, я понимаю, что могу вручную составить запрос, указав определённые поля и просто отсечь объёмные поля, которые не нужны в данный момент. Ну и, ручной маппинг в JDBC как раз решит вопрос с заполнением полей в разных классах. Но в JPA, кроме как сделать наследование на ум особо ничего не пришло. (ну, разве что, да - сделать отдельную таблицу со связью OneToOne и ленивую загрузку). В интернетах ответа не нашёл, затем и пошёл на форум :)
...
Рейтинг: 0 / 0
JPA и наследование
    #39326533
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Сурикат,
- блоб полей нет? Фотографий 3500x3500 пикселей? Тогда вообще не парься.
BLOB ленивым свойством решается. Нафига городить ассоциацию.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326541
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СурикатТут дело, скорее просто в отсутствии опыта работы с ORM и незнании особенностей.

Ну, а с проектированием БД всё в порядке? Нафига на одну таблицу два типа?

СурикатВ JDBC, я понимаю, что могу вручную составить запрос, указав определённые поля и просто отсечь объёмные поля, которые не нужны в данный момент.

Ширина выборки на производительность имеет совершенно никакого влияния. Вы занимаетесь привентивной оптимизацией.

СурикатНу и, ручной маппинг в JDBC как раз решит вопрос с заполнением полей в разных классах.

Вы не рассказали как вы собираетесь объект типа User хранить в переменной типа UserData. С точки зрения одной таблицы они идентичны. А в коде вы решили эту идентичность нарушить.

Сурикат Но в JPA, кроме как сделать наследование на ум особо ничего не пришло.

Что бы на ум что-то пришло надо определиться с тем какую именно проблемы мы пытаемся решить.
Если нужно ограничить выборку по ширине, то пожалуйста JPQL:
Код: sql
1.
select new User(id, name) from UserData
...
Рейтинг: 0 / 0
JPA и наследование
    #39326544
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPetro123Сурикат,
- блоб полей нет? Фотографий 3500x3500 пикселей? Тогда вообще не парься.
BLOB ленивым свойством решается. Нафига городить ассоциацию.
+1. Был не уверен)
тогда вообще проблема высосана из пальца.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326562
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сурикат,

Нашел ещё другое решения. По-хорошему такую проблему нужно решать ленивостью. Ваш подход ленивость убивает на корню. Нужно явно загружать данные другим запросом, чтобы получить все детали. А для ленивости в JPA существует аннотация @Basic. Только учтите что ленивость простых свойств требует инструментации класса на уровне байт-кода. Не знаю как современные реализации JPA, но Hibernate ещё несколько лет назад не умел инструментировать сущности на лету. Нужно было в сборке прописывать.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326634
Сурикат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczВы занимаетесь привентивной оптимизацией.


Да, похоже на то. :)

Blazkowicz По-хорошему такую проблему нужно решать ленивостью. Ваш подход ленивость убивает на корню.

Согласен. Ленивость тут походит гораздо лучше и, в общем, то даже проще.

Спасибо за дельные советы :)
...
Рейтинг: 0 / 0
JPA и наследование
    #39326862
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczШирина выборки на производительность имеет совершенно никакого влияния. Вы занимаетесь привентивной оптимизацией.

Покрывающие индексы? Нет, не слышал.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326880
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркПокрывающие индексы? Нет, не слышал.
Лолшто?
...
Рейтинг: 0 / 0
JPA и наследование
    #39326890
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЛокшин МаркПокрывающие индексы? Нет, не слышал.
Лолшто?
то
...
Рейтинг: 0 / 0
JPA и наследование
    #39326897
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MS опять впереди всех)))
...
Рейтинг: 0 / 0
JPA и наследование
    #39326900
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123MS опять впереди всех)))
Такая оптимизация есть не только у MS. Например здесь .
...
Рейтинг: 0 / 0
JPA и наследование
    #39326904
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк то
...а если бы у рыбы была шерсть, то в ней водились бы блохи.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326940
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк,
это только подтверждает исключение из правил для остальных СУБД).
А по сабжу, эти мелочи что ты привёл...они не ведь не имеют к сабжу отношения.
Теория построения СУБД это одно, а суровая реальность построения Ынтирпрайз - другое.
IMHO
Удачи!
...
Рейтинг: 0 / 0
JPA и наследование
    #39326982
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Локшин Марк,
это только подтверждает исключение из правил для остальных СУБД).

Oracle, DB2 .
Petro123Теория построения СУБД это одно, а суровая реальность построения Ынтирпрайз - другое.

Медленно работает? Да мы еще 10 серверов возьмем.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326988
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123MS опять впереди всех)))
Да ладно тебе стебаться, индексное покрытие обеспечивает любая мало-мальски адекватная СУБД, вплоть до .

Однако, IMHO если человек выбрал ORM, то вопросы как оптимальнее что-то сделать с БД его точно не волнуют. :)
...
Рейтинг: 0 / 0
JPA и наследование
    #39326995
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевОднако, IMHO если человек выбрал ORM, то вопросы как оптимальнее что-то сделать с БД его точно не волнуют. :)
скажу больше.
Если человек выбрал Java, то вопросы Мелочные в СУБД решаются не на уровне программиста.
И это замечательно.
Есть бизнес и требования бизнеса. А есть НИИИ для создания СУБД.
...
Рейтинг: 0 / 0
JPA и наследование
    #39326996
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньеввыбрал ORM
ты прав - вопрос про JPA а не экзотику в БД.
...
Рейтинг: 0 / 0
JPA и наследование
    #39327004
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркМедленно работает? Да мы еще 10 серверов возьмем.
ты не понял.
В Java сидят практики с большой зарплатой. А не теоретики.
Вот когда ты ссылку на практику из ветки Оракла покажешь. Тогда тут будут шевелиться и и ВОЗМОЖНО включать в свою практику.
Пока там в ветке IMHO ноль твоих ссылок.
...
Рейтинг: 0 / 0
JPA и наследование
    #39327073
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Вот когда ты ссылку на практику из ветки Оракла покажешь. Тогда тут будут шевелиться и и ВОЗМОЖНО включать в свою практику.
Пока там в ветке IMHO ноль твоих ссылок.
Заблуждайтесь дальше, ваше право.
...
Рейтинг: 0 / 0
JPA и наследование
    #39327080
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевОднако, IMHO если человек выбрал ORM, то вопросы как оптимальнее что-то сделать с БД его точно не волнуют. :)
Если более-менее быть в курсе и понимать что и как работает, то можно и с ORM задумываться над оптимальностью.
но это же
Petro123мелочи что ты привёл...
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 1 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA и наследование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]