powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
33 сообщений из 33, показаны все 2 страниц
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074395
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<id name="id" type="integer" unsaved-value="null" >
<generator class="identity"/>
</id>
Но в таком случае мне придется добавлять столбец id в таблицу.

Если я пишу так:

<id type="integer" unsaved-value="null" >
<generator class="identity"/>
</id>

То добавлять столбец в таблицу не приходится, но при любой выборке типа
"from hiber.CatImp1 " возникает ошибка SQLException catimp1_id column not found...
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074433
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может сначало решите проблему с вашей базой в которой нет PK?
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074508
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я интересовался у людей плотно работающих с базами, мне сказали что пк желателен, но не обязателен. Я работаю с их базой. Что мне делать в случае hibernate.
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074549
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще вопрос..

В SQL я могу связать две любые таблицы про полю одного типа...

select * from table1 t1 inner join table2 t2 on t1.name=t2.title

Как проделать это с помощью HQL запроса? Непонятно.

Подскажите hibernate новичку люди добрые.

Хибернейтный inner join делает немного другое...
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074595
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TurnЯ интересовался у людей плотно работающих с базами, мне сказали что пк желателен, но не обязателен.
Что?????????
Alexey TurnЧто мне делать в случае hibernate.
Вернуться к старому доброму JDBC
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074613
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Turn

Т.е. ПК нет вообще или он есть но без constraint'а или индекса? Вы как запросы к такой БД пишите? Пример можно?

Я интересовался у людей, плотно работающих с базами..

Обычно таких людей предлагают отстреливать, чтобы не портили генофонд...
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074622
funikovyuri Alexey Turn

Т.е. ПК нет вообще или он есть но без constraint'а или индекса? Вы как запросы к такой БД пишите? Пример можно?

Я интересовался у людей, плотно работающих с базами..

Обычно таких людей предлагают отстреливать, чтобы не портили генофонд...

люди всякие нужны
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074655
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не спорю. я думаю Алексей их как-то неправильно понял
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074663
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri Alexey Turn

Т.е. ПК нет вообще или он есть но без constraint'а или индекса? Вы как запросы к такой БД пишите? Пример можно?

Я интересовался у людей, плотно работающих с базами..

Обычно таких людей предлагают отстреливать, чтобы не портили генофонд...
Слишком категорично... Отсутствие pk - нормальная ситуация.
С этим можно и нужно жить (ц) не знаю кто
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074750
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmОтсутствие pk - нормальная ситуация.
С этим можно и нужно жить (ц) не знаю кто

Можно уточнить, "нормальная" - в смысле "широко распространненная в нашем несовершеном мире криворуких головотяпов - разработчиков" ?
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074753
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm

да не вопрос! это у меня настроение наверное сегодня такое ;)

PS> я думаю все-таки кто-то кого не понял и пока Алексей ясно картину не нарисует обсуждать по-сути нечего
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074872
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XM TimmОтсутствие pk - нормальная ситуация.
С этим можно и нужно жить (ц) не знаю кто

Можно уточнить, "нормальная" - в смысле "широко распространненная в нашем несовершеном мире криворуких головотяпов - разработчиков" ?
Я этого не говорил :-)
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074877
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Началось, как я уже говорил с хибернэйта.

Головотяпом- разработчиком в данном случае выступаю я.
В моем веб- приложении есть 2 таблицы (На самом деле их больше но интересны эти.)

Моя mysql база синхронизируется с базой database developerov,
т.е происходит закачка справочников от них ко мне.

Таблица 1 :

название: price
поле price_id int pk
поле id_nprice int pk
поле price_title varchar

Первые два поля композитный ключ(точно не знаю как это называется) но по ним однозначно определяется строка таблицы.

В своей базе я не стал обзывать эти поля primary key, потому, что предполагаю что таблица из которой я импортирую данные зараннее корректна.

Эту проблему я предполагаю решить следующим образом: навесить таки primary keys на поля. Замапить composite id в hibernate.

Далее...

Есть вторая таблица:

имя: links
поля: price_id int pk
field1 int pk
field2 int pk
field3 int pk
id_nprice int
Все поля в этой таблице кроме id_nprice составляют пк.
Вопрос как с помощью хибернэйт реализовать sql выборку:

select * from price p inner join links l on (p.price_id=l.price_id AND p.id_nprice=l.id_nprice);
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074890
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока забил на все и написал Connection conn= session.connection()..
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074930
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправьте, если я ошибаюсь, но Hibernate, как и прочие ORM, всегда требует наличия ID (простых или composite).

По теме http://www.hibernate.org/hib_docs/reference/en/html/components.html ?
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33074969
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм по этой ссылке рассказывается про Component Mapping.
Мне хотелось бы узнать как замапить композитный пк и что потом с ним можно делать... именно об этом я щас и читаю.
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33076213
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас оказывается что использование композитных ключей вобще не рекомендовано создателями hibernate и якобы лучше использовать суррогатные ключи, т.е добавлять суррогатный.. лишний столбец ключа в таблицу.
При использовании композитных ключей приходиться возиться с equals() и hashCode() ами, что немного напрягает и сложно для понимания.

Если придется ставить суррогатный ключ, то получается что на него надо в любом случае ставить счетчик- auto_increment.
Иначе при закачке данных в таблицу не через хибернэйт никакой генерации суррогатных ключей не будет.

Последнее время хибернэйт нравится мне все меньше и меньше... может те кому хорошо с хибернэйт поделятся секретами счастья?
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33076489
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Turn

При использовании композитных ключей приходиться возиться с equals() и hashCode() ами, что немного напрягает и сложно для понимания.
Спешу огорчить - с ними нужно будет "возиться" в любом случае... Так что если это "сложно для понимания" то мой совет дождаться момента, когда будет не сложно. Hibernate чрезвычайно полезная и мощная вещь, но он требует больших базовых знаний и по ООП и по РСУБД. Его очень сложно осилить не имя большого опыта в этих областях за плечами
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33077384
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто возникает законный вопрос.
Надо ли оно мне.. ради обычного inner join мапить две таблицы, создавать композитные ключи, переопределять методы equals и hashCode() и писать для двух таблиц 6 файлов.. два интерфейса два класса два xml маппинга и два теста.. итого 8 ..
Что мне это даст, какие преимущества это противопоставит обычному jdbc, для которого здесь нужен будет всего один exequteQuery();
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33077472
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При такой постановке вопроса - конечно ничего не даст. А что вы от hibernate ждали?
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33077882
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Всем,
я, как вижу, нашего полку прибыло, еще один hiberneto-ненависник вырисовывается... Привет коллеге.

На самом деле все просто. Я, да и Алексей наверно, привыкли _мыслить_ понятиями базы, а hibernate предпологает _мыслить_ понятиями ООП. А сии взгляды очень расхожи. А главное, мыслить и так и сяк одновременно невозможно (в рамках одного проекта). Имея кой-какой опыт работы с базой уже привыкаешь к кой-каким реальностям (отсутсвие ПК например). Оч.часто приходиться работать воще не со своей базой, а с чужой, спроектированной, может не лучшим образом. Ну а тут еще hibernate начинает палки в колеса ставить своими _принцыпами_.

Я ничего не имею супротив ООП. И hibernate в частности. Вот тольки стоит отдавать себе отчет в том, что вся его _мощь_ может быть использована только при наличии неких определенных (близких к идеальным) условиях. В остальных случаях можно получить много головной боли. В частности, кады начнешь мешать JDBC с hibernate. Сие можно сделать, но осторожно. По крайней мере понимая, как hibernate работает с базой.
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33077923
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrushok

вилами по воде... в общем полностью не согласен :)
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33078174
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так уж и со ВСЕМ? А можно поподробнее? Таки hibernate еще не покинул моих планов ...
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33078702
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrushokТак уж и со ВСЕМ? А можно поподробнее? Таки hibernate еще не покинул моих планов ...

Имхо, книжка "hibernate in action" ответит быстрее и на большее число вопросов.
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33078900
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну шо за такой народ ленивый пошел. Да читал я Ваши книжечки. И не только. Терзал сей hibernate по мере сил и возможностей. Дык Вы хоть чой-то реальное на нем пишите? Я честно признаюсь - не писал еще. Только примерчики всяки... Поэтому и вопросов, больше чем ответов.

Ну дык, коли лень поднять зад, давайте небольшой опросец забацаем. Я вопросики просты задам, а коме не совсем влом, пусть тольки да-нет ответит (ну ежели совсем не влом, комментарии тольки приветсвуются ...). Вы кстати, тоже вопросики добавлять могете (опять таки если не влом...). Я уж отвечу, не поленюся.

Итак, поехали
1) Hibernate ускоряет разработку простых и средних приложений
2) Hibernate ускоряет разработку сложных приложений
3) Не рекомендуется мешать hibernate и JDBC
4) Hibernate заменяет понятие RDB на что-то типа "Persistent objetcs in DB"
5) Hibernate не рекомендует использовать native SQL
6) Hibernate работает медленнее, чем если реализовывать через JDBC
7) Сей топик породил еще одного (как миниум) hibernato-ненависника
8) ООП - панацея на все
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33078901
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и мои ответы, конечно
1) Hibernate ускоряет разработку простых и средних приложений - Да
2) Hibernate ускоряет разработку сложных приложений - Нет
3) Не рекомендуется мешать hibernate и JDBC - Да
4) Hibernate заменяет понятие RDB на что-то типа "Persistent objetcs in DB" - Да
5) Hibernate не рекомендует использовать native SQL - Да
6) Hibernate работает медленнее, чем если реализовывать через JDBC - Да
7) Сей топик породил еще одного (как миниум) hibernato-ненависника - Да
8) ООП - панацея на все - Нет
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33079013
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто у меня появилось время и мне хочется прощупать технологию hibernate.

Во время этого прощупывания соответственно появляются вопросы.

1. Сначала была база потом приложение. Стоит ли в этом случае городить огород реляционного мапинга.

Понятно, что если супердизайнеры объектов спроектировали uml картинки приложения. Потом забабахали классы. Потом сгенерили таблицы в базе... естественно у них не возникнет особых несостыковок.

А вот если заказчик дает тебе базу и говорит: менять структуру низя. Приходится изъ№"№нуться чтоб натянуть на нее hibernate. Или может hiberprofy натягивают hibernate на любую базу?

2. Действительно ли рекомендуется не мешать hibernate и jdbc? Если да то почему?
(Для меня это очень важно, потомучто только так я могу гарантировать, что все будет работать независимо от моих граблей с хибернэйтом - вызывать session.getConnection() там где нельзя по другому и пользоваться старым добрым дждбс)

Единственное что мне пока нравится - это то, что я получаю в результате выборки объекты(Не нада руками мапить резалтсет в нужные объекты).

Буду благодарен за показанные преимущества hibernate.

Да и не плохо было бы исключить ответы о преимуществах хибернэйт типа:

"А... О... хибернайт - выбор профессионалов... подрастешь поймешь(непременно растопырив пальцы) "
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33079092
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrushok
1) Hibernate ускоряет разработку простых и средних приложений - Да
2) Hibernate ускоряет разработку сложных приложений - Нет

В книжечке, о которой я упоминал, приводятся рассуждения о не стыковке парадигм возникающей при связывании реляционных баз данных и оо кода.
Там достаточно много иллюстраций в чём эта не стыковка выражается.
Суть всех этих рассуждений одна: если идти на поводу баз данных - теряются все прелести ооп, если идти на поводу у ооп - теряются все приимущества от использования баз данных.
Там же описаны существующие подходы к решению этой проблемы и
ORM признаётся наиболее зрелым из них.

Так же приводится классификация ORM cистем:

Let’s look at the various ways ORM can be implemented. Mark Fussel
[Fussel 1997], a researcher in the field of ORM, defined the following four levels of
ORM quality.
Pure relational
The whole application, including the user interface, is designed around the relational
model and SQL-based relational operations. This approach, despite its deficiencies
for large systems, can be an excellent solution for simple applications
where a low level of code reuse is tolerable. Direct SQL can be fine-tuned in every
aspect, but the drawbacks, such as lack of portability and maintainability, are significant,
especially in the long run. Applications in this category often make heavy
use of stored procedures, shifting some of the work out of the business layer and
into the database.
Light object mapping
Entities are represented as classes that are mapped manually to the relational
tables. Hand-coded SQL/JDBC is hidden from the business logic using wellknown
design patterns. This approach is extremely widespread and is successful
for applications with a small number of entities, or applications with generic,
metadata-driven data models. Stored procedures might have a place in this kind
of application.
Medium object mapping
The application is designed around an object model. SQL is generated at build
time using a code generation tool, or at runtime by framework code. Associations
between objects are supported by the persistence mechanism, and queries may be
specified using an object-oriented expression language. Objects are cached by the
persistence layer. A great many ORM products and homegrown persistence layers
support at least this level of functionality. It’s well suited to medium-sized applications
with some complex transactions, particularly when portability between
Object/relational mapping 25
different database products is important. These applications usually don’t use
stored procedures.
Full object mapping
Full object mapping supports sophisticated object modeling: composition, inheritance,
polymorphism, and “persistence by reachability.” The persistence layer
implements transparent persistence; persistent classes do not inherit any special
base class or have to implement a special interface. Efficient fetching strategies
(lazy and eager fetching) and caching strategies are implemented transparently to
the application. This level of functionality can hardly be achieved by a homegrown
persistence layer—it’s equivalent to months or years of development time. A number
of commercial and open source Java ORM tools have achieved this level of
quality. This level meets the definition of ORM we’re using in this book. Let’s look
at the problems we expect to be solved by a tool that achieves full object mapping.


hibernate - ORM средство из последней категории.

Выгода от его использования тем выше, чем больше требований к ORM системе предьявляет конкретное приложение.
По умолчанию предполагается, что приложение построено согласно layered architecture и что hibernate будет использован в его persistent layer.

Imho,
- в простых приложениях использование hibernate замедлит разработку, проще грамотно спроектировать таблички, процедурки и т.д.
- в средних - в зависимости от опыта работы с hibernate и общих требований к приложению (если не знать достаточно хорошо h* и торопиться, то получится заведомо хуже, чем используя голый jdbc).
- в сложных - без использования hibernate или аналогичного средства просто никуда не денешься.



3) Не рекомендуется мешать hibernate и JDBC - Да

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


4) Hibernate заменяет понятие RDB на что-то типа "Persistent objetcs in DB" - Да

Я не нахожу смысла в этой фразе.


5) Hibernate не рекомендует использовать native SQL - Да

Так же как не рекомендуется использовать native код в java приложениях.


6) Hibernate работает медленнее, чем если реализовывать через JDBC - Да

В простых приложениях - да, т.к. там достаточно просто
представить все таблички, связи между ними и написать эффективные запросы.
В сложных - нет. Попытки ручного написания sql в этом случае сродни попыткам написания эффективного кода на ассемблере под различные процессоры. Мало того, что это оЧЧень много работы, эта работа может быть проведена в пустую. Правда это теория, на практике я никогда такую работу не делал (оптимизацию sql в сложных аpp).



7) Сей топик породил еще одного (как миниум) hibernato-ненависника - Да

Как мало надо для того, что бы породить какого-нибудь ненавистника :)


8) ООП - панацея на все - Нет

Не понятно зачем такой вопрос ставился.
Есть области, где использование ООП даёт преимущества и есть области, где это не так.
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33079216
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не_Без_Нас_Грешных ...
Imho,
- в простых приложениях использование hibernate замедлит разработку, проще грамотно спроектировать таблички, процедурки и т.д.
- в средних - в зависимости от опыта работы с hibernate и общих требований к приложению (если не знать достаточно хорошо h* и торопиться, то получится заведомо хуже, чем используя голый jdbc).
- в сложных - без использования hibernate или аналогичного средства просто никуда не денешься.


На Ваше Imho я имею свое. Тольки одно уточнение. Возможность спроектировать базу и написать поверх нее что-то достаточно _невилика_ в наше время. Скорее всего база уже рождена кем-то до Вас и
1) Она сама спректированна не лучшим образом (программисты, твою мать)
2) Она совершенно не отвечает тем пожеланиям, которые Вы имеете.
Таки, если Вы обитаете в _академическом_ мире, то оч.удобно сопоставлять нужные пробирки, а реалный мир предпологает разгребание дерьма в производсвенных масштабах. К большому сожалению с реальным миром я имеел дело куды чаще (может, Вам и везло ...)

Итого
- в простых приложениях использование hibernate ускорит разработку, проще грамотно _ВСЕ_ спроектировать и _РЕАЛИЗОВАТЬ_.
- в средних - в зависимости от опыта работы с hibernate и общих требований к приложению (если не знать достаточно хорошо _ЧТО-ТО_ и торопиться, то получится заведомо хуже, чем используя _ТО_ЧТО_ЗНАЕШЬ_, Hibernate в частности, так как не стоит предпологать, что это умно использовать hibernate, если с ним не знаком).
- в сложных - без использования оптимизации SQL и изменения схемы базы (например, денормализация) просто никуда не денешься. Что сущейственно осложняет работу с такими промежуточными layers как hibernate.

Вот така моя интерпритация. А в остальном, прекрасная маркиза, я с Вами полностью согласен, да и Вы со мной, что совсем не странно, однако.

2 Алексей Поворотный
Я уже тут кое-где писал о сюрпризах hibernate, типа что save() совсем не означает, что объект записывается в базу, а load(), что он из базы прочитан. Hibernate кеширует запросы и выполняет их, только когда считает нужным. Так что надо либо довериться ему в этом (можно, его толковые ребята писали), либо ... сами знаете. Вот и не надо мешать JDBC, а то много грабель будет.
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33079565
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrushok

Я уже тут кое-где писал о сюрпризах hibernate, типа что save() совсем не означает, что объект записывается в базу, а load(), что он из базы прочитан.
А вы, батенька, провокатор. Как там с моим примером дела, в котором save() все записывал, а load() загружал?

1) Hibernate ускоряет разработку простых и средних приложений
2) Hibernate ускоряет разработку сложных приложений


Не совсем верно, на мой взгляд, поставлен вопрос. ORM ускорит разработку любых приложений, но только если их будет вести достаточно грамотная команда разработчиков. Иначе orm не спасет ни малый, ни крупный проекты.

3) Не рекомендуется мешать hibernate и JDBC
Не верно. Я, например, мешаю и, так как это все так и остается на уровне реализации моих DAO - то я никак не теряю в совместимости.

4) Hibernate заменяет понятие RDB на что-то типа "Persistent objetcs in DB"
Не верно. РБД - это РБД никто не предлагает заменять их ORM. Это как двигатель
рулем.
5) Hibernate не рекомендует использовать native SQL
Тоже неверно. Т.е. вы не совсем верно понимаете рекомендации hibernate team. Они не рекомендуют его использование для реализации object querying'а для самого hibernate. т.е. если хотите использовать те же хранимые процедуры я бы лучше стал мешать hibernate и jdbc.
6) Hibernate работает медленнее, чем если реализовывать через JDBC
Лучше документацию по Hibernate прочесть - там об этом неплохо написано.

7) Сей топик породил еще одного (как миниум) hibernato - ненавистника
По-моему сей топик не тянет даже на средний уровень. так что кого и когда он породил мне не ясно.
8) ООП - панацея на все

Сложный вопрос. Вы, я так понимаю, противопоставляете ООП и ER-моделирование РБД? Это в общем не верно. Почему? Это другой вопрос...
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33080771
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фуников Юрий
Я уже тут кое-где писал о сюрпризах hibernate, типа что save() совсем не означает, что объект записывается в базу, а load(), что он из базы прочитан.
А вы, батенька, провокатор. Как там с моим примером дела, в котором save() все записывал, а load() загружал?

А вы батенька, американский шпиен, однако! Таки не колитесь. С примером усе впорядке - я помоему описал мою работу с ним. Вы читали? Я не знаю... Можно былоб пару сточек хотя бы чиркнуть ... Там кой-каки грабли, кстати описаны (я могу, конечно опять ошибаться, человек, однако). Ну дык к нашим баранам

1) save() ничего не кладет в базу, а кеширует SQL запросы. Они выполняются при вызове commit()
2) load() ничего не грузит из базы, к базе идет запрос тольки при первом вызове какого-нить get...()

Эти утверждения верны или нет? Если верны - ТРЕБУЮ ИЗВИНЕНИЙ ЗА ПРОВОКАТОРА! (шутка =)). Если нет - зарание сам извиняюсь - мол, провокатор таки, бес попутал (тоже шутка =)).

Ну а что грамотная команда разработку (любую!) сделает лучше, я согласен. Да и кажный согласиться. А вот средненька команда (опять реалии жисти, однако) дров может с hibernate наломать, что потом и не расхлебаешь. Да еще при условии, что база дана _как_есть_. Так что дорогой Вы наш, учитывая все наши оговорки, мы говорим об одном и том-же, тольки в силу нашей личной специфики кажный выпячивает то, что ему выгодно и скрывает, что не выгодно. Нормальное поведение.


Ну и про RDB и OOP. Опять таки вопросики ...
1) Если я использую JDBC - я работаю с понятиями RDB (record, field, recordset ...)
2) Если я использую Hibernate - я работаю с понятиями OOP (object, hierarchy, deriving ...)
3) Eсли я пользую и то и другое - я вынужден мешать эти понятия.

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

Я уже говорил - меня щас волнует _практицкое_ использование сего продукта, поэтому я и придираюсь к нему. А _тетеретицки_ все очень классно, что в описаниях (которые Вы мне советуете постоянно почитать) показано. Я уже и эту книжку "Hibernate in Action" прикупил, написанную кстати авторами сего продукта. Там тоже много лестных слов они о себе написали.

Основеная проблема (для меня, ессесвенно) это то что ребята из hibernate мыслят совсем иначе, чем я. И если они считают, что hibernate генерить достаточно оптимальй коде - я с ними не согласен. Оптимизировать базу на уровне SQL запросов (хранимых процедур в частности) можно лучше. Imho. Но написать достаточно хорошо работающее приложение быстро - это вопрос. На который я пока для себя точноного ответа не получил, однако ...
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33080901
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы читали? Я не знаю... Можно былоб пару сточек хотя бы чиркнуть ... Черкну сейчас
авторОни как раз решили наоборот и постепенно развивают продукт в этом направлении

Это верная. Первая тоже верная, но я имел в виду что в том виде в котором поддержка SP реализована сейчас их использование для CRUD-операций не целесообразно.

...
Integer id = Integer( 2);
Cat cc = session.load( Cat.class, id);
...
// где-то выполнили SQL напрямую и удалили из базы кота с ID = 2
...
cc.setName( cc.getName() + '!'); // Таки здесь получили ошибку, так как
// кот cc начал грузиться из базы тольки на cc.getName();
session.save( cc);

Да произойдет ошибка и транзакция откатится. Это нормальное поведение. Тут можно много интересного написать про pessimistic и optimistic locking strategy, но конкретно для этого примера прежде всего стоит сказать что он концептуально не верен. Т.е. налицо ошибка в алгоритме. А так из-за того что все действия проходят в одной транзакции мешать код (sql и hql) можно и иногда нужно.

Я имел ввиду не использовать insert/update/delete напрямую (сие работает!) а SP вместо них.
И я тоже имел в виду именно это :)

практически в кажный SQL может быть необходимость что-то добавить.
Или я чего-то не понимаю или ... Т.е. хочется пример задачи где в каждый запрос с клиента нужно чего-то добавлять! (ну во view это все заверните ?)

Да и кажный согласиться. А вот средненька команда (опять реалии жисти, однако) дров может с hibernate наломать, что потом и не расхлебаешь.
Согласен. Но Imho такую команду лучше к проектам не подпускать. Пусть не все, но ведущие позиции должны занимать знающие люди. Они вместе с code review должны будут выявлять неверные подходы у менее опытных товарищей. Но это уже больше не ко мне а к тем кто занят управлением проектами.

Я думаю здесь все согласны, что ответ "ДА".
А вот хорошо ли мешать то и другое, вопрос более сложный и мы опять вернулись в область оговорок - квалификация команды.
Тоже согласен. Но это “мешание” будет изолированно в DAL'е и без него пока так или иначе никуда. Все равно с простыми recordset'ами ничего серьезного не сделаешь.

1) save() ничего не кладет в базу, а кеширует SQL запросы. Они выполняются при вызове commit()
2) load() ничего не грузит из базы, к базе идет запрос только при первом вызове какого-нить get...()
Первое верно, второе зависит от вида locking strategy
...
Рейтинг: 0 / 0
Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
    #33080962
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, дык обо всем договориться можно.
Вот тольки с командой беда, манагеры, сволочи, хотять подешевле, так имеем, что имеем ... Но это уже из другой оперы, офф топ, однако.
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Что делать если у меня нет первичного ключа в базе , а hibernate требует его явно писать.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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