2010-06-29 2 views
1

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

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

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

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

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

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

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

Благодаря


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

Благодаря

ответ

2

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

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

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

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

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

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

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

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

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

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

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

6

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

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

+0

Полностью согласен. +1 –

2

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

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

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

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

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

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

+0

Я понимаю аналогию, но испанский не поможет, если никто не говорит по-испански в стране, которую вы собираетесь посетить в течение следующего лета. Кстати, я бы предпочел [Java Persistence with Hibernate] (http://www.manning.com/bauer2/) (который рассматривается как второе издание Hibernate в действии). –

+0

Паскаль, я имел в виду кривую обучения. Я уверен, что ты это понял. – 2010-06-29 13:41:37

+0

Да, я понимаю, что Hibernate действительно стоит инвестиций. (и у вас есть мой +1 для этого). Но я все еще думаю, что конкретная ситуация в OP не идеальна для Hibernate. –

0

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

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

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

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

Смежные вопросы