Будет в спящем режиме программы Java не имеют никакого кода SQL?

Я не работал с, в спящем режиме. Я имею немного опыта в Java. Я проходил источник зверя JAVA-приложения, созданного Oracle (управление Розничной ценой). Я ожидал много кода SQL, встроенного там, поскольку приложение делает интенсивное использование базы данных. Но к моему удивлению, НИКАКОЙ встроенный код SQL! до сих пор. Я нашел, что это использовало то, что называют, как "В спящем режиме" от партии .hbm.xml файлы. Действительно ли это - товарный знак для использования программ Java, в спящем режиме, или возможно я не видел полную кодовую базу?. Кто-то мог просветить меня, как это возможно?.Спасибо.

5
задан wowrt 11 June 2010 в 12:44
поделиться

5 ответов

Hibernate, как и все инструменты ORM, действительно уменьшает или устраняет необходимость использования необработанного SQL в коде Java, благодаря следующему:

  • многие ассоциации между различными сущностями записаны в отображении Hibernate, поэтому они извлекаются Hibernate автоматически - т.е.. Если у вас есть агрегационное отношение между двумя классами на стороне Java, оно может быть отображено как отношение внешнего ключа в БД, и Hibernate, когда загружается экземпляр класса A, может автоматически загрузить связанные с ним экземпляры класса B,
  • многие запросы могут быть сделаны на собственном языке запросов Hibernate HQL или с помощью API Criteria.

Под капотом Hibernate действительно генерирует SQL для связи с БД, но это не видно на стороне Java. Однако его можно увидеть в журналах, если он включен.

Благодаря этому программам, использующим Hibernate, очень редко требуется использовать JDBC или SQL напрямую. Исключения обычно связаны с "хитрыми" унаследованными схемами БД, которые не могут быть полностью обработаны Hibernate.

2
ответ дан 14 December 2019 в 13:26
поделиться
1
ответ дан 14 December 2019 в 13:26
поделиться

Гибернация - это инструмент или технология который заботится о взаимодействии между базой данных и приложением за вас. Вы должны сообщить ему структуру приложения и базу данных, это то, что находится в файлах .hbm.xml.

SQL генерируется Hibernate во время выполнения (своего рода)

Допустим, у вас есть класс Fruit , и его объекты сохраняются в таблице T_FRUIT .

Вы говорите это для перехода в спящий режим через файлы .hbm.xml . Что существует таблица T_FRUIT , эта таблица представлена ​​классом Fruit, и какие поля в классе Fruit соответствуют каким столбцам в таблице T_FRUIT .

И затем он знает, что всякий раз, когда вы пытаетесь сохранить фрукт, он должен вставить / обновить таблицу T_FRUIT .

Когда вы хотите создать яблоко, вы создаете объект фрукта, соответствующий яблоку, и сохраняете «сохранить этот фрукт». Hibernate позаботится о его сохранении.

Вы можете определять отношения между таблицами, и Hibernate достаточно умен, чтобы сохраняться в нескольких таблицах.

Когда вы выбираете фрукт, hibernate также получает подробную информацию о фрукте и его дочерних элементах (данные из ссылочных таблиц). И вы можете сказать, хотите ли вы забрать всех детей сразу или по мере необходимости .

И так далее. Цель состоит в том, чтобы упростить вашу жизнь и сделать код удобным для сопровождения, легким чтением, переносимостью, ...

Имея эту информацию, позвольте мне перенаправить вас .

1
ответ дан 14 December 2019 в 13:26
поделиться

Hibernate генерирует SQL для всех своих стандартных операций с базой данных. Он понимает различные диалекты SQL, а файлы отображения (.hbm.xml) рассказывают ему о структуре базы данных, чтобы он знал, как строить свои запросы. Есть параметр showSql, который можно включить, если вы хотите видеть, как он выводит сгенерированный SQL в процессе работы.

1
ответ дан 14 December 2019 в 13:26
поделиться

Hibernate - это объектно-реляционный маппер (ORM). ORM используются для того, чтобы скрыть от вашей программы уродливые детали несовместимости SQL между базами данных - вы определяете свои таблицы и сопоставляете их с иерархией объектов (файлы .hbm.xml), а затем Hibernate делает все остальное. Таким образом, большинство программ, использующих Hibernate, не увидят ни одной фразы SQL, если только нет особой причины для выполнения сложного запроса.

1
ответ дан 14 December 2019 в 13:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: