Пара вопросов по использованию Hibernate и ORM с Oracle - PullRequest
1 голос
/ 29 июня 2010

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

Обычно я просто использую старый добрый jdbc со стандартными запросами sql или хранимыми процедурами в коде.Пока это работает хорошо для меня, но мне интересно, поможет ли использование hibernate и уменьшит ли нагрузку.Это также хороший способ узнать о спящем режиме.

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

  • Нет необходимости писать запросы
  • Нет необходимости управлять запросами
  • Управление транзакциями, вероятно, будет проще.

Есть также некоторые вопросы, которые я не уверен, каковы ответы.Например, база данных, с которой я буду работать, довольно старая, и не все таблицы имеют первичные ключи.Читая руководства по hibernate, возникли следующие вопросы

  • Должны ли все таблицы иметь первичный ключ с именем "id"?Ни в одной из моих таблиц нет столбца с именем id.Первичные ключи называются как-то иначе
  • Должны ли таблицы иметь первичные ключи?Не все мои таблицы имеют первичные ключи.Особенно таблицы с постоянными данными.
  • Некоторые таблицы имеют первичные ключи в качестве составных ключей (первичный ключ состоит из 2 столбцов).Разрешено ли это?

Я также был бы заинтересован в любых простых уроках.Я видел пару, но ни один из них не предназначен для новичков.

Спасибо


Может ли кто-нибудь представить ситуации / примеры сценариев, когда гибернация становится неоценимой

Спасибо

Ответы [ 4 ]

6 голосов
/ 29 июня 2010

Я думаю, что Hibernate увеличит вашу нагрузку.ORM означает объекты, поэтому вам придется писать объекты для сопоставления таблиц Oracle.

Я не думаю, что это подходящее использование Hibernate.JDBC подходит для этого случая.Обязательно продолжайте, если вы хотите изучать Hibernate, но я могу подумать о нескольких небольших проблемах, где это было бы более уместно.

2 голосов
/ 29 июня 2010

Обычно я просто использую старый добрый jdbc со стандартными запросами sql или хранимыми процедурами в коде.До сих пор это работало хорошо для меня, но мне интересно, поможет ли использование hibernate и уменьшит ли это нагрузку.

Это было бы довольно просто реализовать с JDBC и не потребовало бы много запросов, есливы используете DatabaseMetaData и ResultSetMetaData для динамического выполнения действий.

В Hibernate вам придется генерировать объекты из физической модели.Это возможно, Hibernate предоставляет инструменты для этого.Но я не уверен, что Hibernate даст вам здесь какое-либо преимущество (не приложение CRUD, JDBC просто сработает).Поэтому я согласен с @duffy, Hibernate может даже дать вам больше работы.

Это также хороший способ узнать о спящем режиме.

Я могу это понять.Но, на мой взгляд, это не лучшее приложение для изучения Hibernate.

Все ли таблицы должны иметь первичный ключ с именем "id"?Ни в одной из моих таблиц нет столбца с именем id.Первичные ключи называются как-то иначе

Нет, это не требуется, вы можете сопоставить любое имя столбца как первичный ключ.

Должны ли таблицы иметь первичные ключи?Не все мои таблицы имеют первичные ключи.Особенно таблицы с постоянными данными.

Если у вас нет уникального столбца, это будет проблемой, Hibernate ожидает, что сущности будут иметь идентификатор.

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

Это поддерживается.

2 голосов
/ 29 июня 2010

Рассматривайте Hibernate как инвестицию.Так же, как изучение испанского или боевых искусств.В начале это сложно, но после прохождения провала вы получите огромные преимущества.

Чтобы ответить на ваши вопросы:

  • Вы можете использовать любой первичный ключ, который выхотите с Hibernate

  • Hibernate не поддерживает таблицы без первичного ключа, но зачем вам это нужно?

  • Да поддерживаются составные ключи

Подумайте о покупке Hibernate в действии.Начните оттуда.

0 голосов
/ 30 июня 2010

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

Я не dba, и я знаю, что есть несколько аргументов за и против использования первичных ключей, но я действительно не хочу вдаваться в подробности.

Честно говоря, причина, по которой я хочу использовать hibernate, исключительно для моей собственной выгоды, поскольку я хотел бы научиться использовать его. Учитывая, что у меня есть возможность написать этот инструмент, и что он не является критически важным инструментом и будет использоваться только «на месте», я решил, что мне следует попробовать спящий режим, и, изучив его, я могу найти его полезным позже, если мне потребуется это на других проектах.

В настоящее время у меня нет требования писать в базу данных, так что я буду только читать из базы данных. Поскольку не все таблицы имеют первичные ключи, возможно ли обмануть спящий режим, используя уникальный столбец в качестве первичного ключа? Я думаю, что возможно создать VIEWS и добавить столбец id в представление для таблиц, которые не имеют первичного ключа или уникального ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...