Hibernate и внешние ключи по Id
От: elmal  
Дата: 22.07.22 08:16
Оценка:
Я правильно понимаю, что в Hibernate и JPA нет возможности поставить какое поле как идентификатор, long, UUID — не важно, и указать что это поле будет внешним ключем к какой либо сторонней таблице? Соответственно обязательно идентификатор мапить как сущность, расставлять Lazy и т.д? Собственно я бы так и сделал, вот только у меня там получается по смыслу направленный ациклический граф и в случае если там получается ромбовидная структура (ветки сначала расходятся, а затем несколько веток смыкаются в одну) — такое мапиться не захотело корректно и пришлось мне на явные идентификаторы переходить.

Пока подозреваю что придется тупо руками (точнее через flyway) внешние ключи проставлять непосредственно в базе, что на данном этапе рановато. Или все таки что то упустил и есть возможность сделать все именно через Hibernate?
Re: Hibernate и внешние ключи по Id
От: StanislavK Великобритания  
Дата: 01.08.22 10:22
Оценка:
Здравствуйте, elmal, Вы писали:

E>Пока подозреваю что придется тупо руками (точнее через flyway) внешние ключи проставлять непосредственно в базе, что на данном этапе рановато. Или все таки что то упустил и есть возможность сделать все именно через Hibernate?

Признаться забил на hibernate много лет назад — по моему мнению это тема не взлетит и пользуются ей все меньше, так как смысле большого я в ней не вижу. Причина, в основном, в том, что, как и по многих таких фреймворках, он слишком сложный и поддержка того, что он напрямую не поддерживает оборачивается большой магией, которую поддерживать без пол-литра будет сложно.

В общем, как мне кажется, если что-то прямолинейно не влезает в Hibernate, просто расслабьтесь и делаете раками — в итоге будет и проще и быстрее.
Re[2]: Hibernate и внешние ключи по Id
От: elmal  
Дата: 01.08.22 11:40
Оценка:
Здравствуйте, StanislavK, Вы писали:

SK>Признаться забил на hibernate много лет назад — по моему мнению это тема не взлетит и пользуются ей все меньше, так как смысле большого я в ней не вижу.

Смотря для чего не пользоваться. Я как то блин вместо него заюзал OrmLite — там мне потом до черта функционала из Hibernate пришлось руками писать. А если на голом SQL как сейчас я делаю (у меня как раз сейчас смысла в Hibernate нет), так иначе половину Hibernate так или иначе сам ручками блин напишешь, на голом JDBC то одного нет, то другого.

Собственно проблему то решил, сделал все по каноничному через Lazy связи на полную сущность, вроде работает.
Re[3]: Hibernate и внешние ключи по Id
От: StanislavK Великобритания  
Дата: 02.08.22 05:41
Оценка:
Здравствуйте, elmal, Вы писали:

E>Здравствуйте, StanislavK, Вы писали:


SK>>Признаться забил на hibernate много лет назад — по моему мнению это тема не взлетит и пользуются ей все меньше, так как смысле большого я в ней не вижу.

E>Смотря для чего не пользоваться. Я как то блин вместо него заюзал OrmLite — там мне потом до черта функционала из Hibernate пришлось руками писать.
Вот я заметил, что без hibernate как раз писать приходится столько же сколько и с hibernate, Чем больше система, тем больше появляется кода, который и решает проблему, а существует только потому, что hibernate.

E>А если на голом SQL как сейчас я делаю (у меня как раз сейчас смысла в Hibernate нет), так иначе половину Hibernate так или иначе сам ручками блин напишешь, на голом JDBC то одного нет, то другого.

А чего там нету-то? Понятно, что всякого кеширования, например, нету, но кеширование руками на практике куда проще. В плане всяких мапингов, то, по мне, лучше их кодом описывать, чем аннотациями — кода столько же, только без магии. С запросами та же тема — там hibernate часто добавляет сложности из-за того, что у него есть свои взгляды на то как все должно мапится.

E>Собственно проблему то решил, сделал все по каноничному через Lazy связи на полную сущность, вроде работает.
Re[4]: Hibernate и внешние ключи по Id
От: elmal  
Дата: 02.08.22 05:52
Оценка:
Здравствуйте, StanislavK, Вы писали:

SK>А чего там нету-то? Понятно, что всякого кеширования, например, нету, но кеширование руками на практике куда проще. В плане всяких мапингов, то, по мне, лучше их кодом описывать, чем аннотациями — кода столько же, только без магии. С запросами та же тема — там hibernate часто добавляет сложности из-за того, что у него есть свои взгляды на то как все должно мапится.

Как минимум на старте проекта очень части меняется схема данных. И на каждый чих приходится еще и DDL править. В Hibernate создание базы автоматом и CRUD из коробки сразу готов, соответственно изменения делаются очень быстро (когда в проде и уже нужно писать миграции — тут конечно уже выгоды нет). А всякие OrmLite и т.д — обязательно потребуются блин потом составные ключи и т.д и будешь извращаться с их имитацией, или всякие MappedSuperclass.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.