Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что такое hibernate ? 
:(
    Опции темы
Wowa
Дата 14.10.2004, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Что такое hibernate (из соседней темы biggrin.gif ) ?
PM WWW   Вверх
Шмель
Дата 14.10.2004, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.4.2004

Репутация: 5
Всего: 18



smile.gif
Hibernate - Object-Relational XML-based persistence
Позволяет проецировать классы с помощью XML на таблицы базы данных


Это сообщение отредактировал(а) Шмель - 14.10.2004, 12:58
--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
Шмель
Дата 14.10.2004, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.4.2004

Репутация: 5
Всего: 18



Пример
Это map-xml
Код
<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
   <class
       name="forum.orm.Subject"
       table="subject"
       dynamic-update="false"
       dynamic-insert="false"
   >

       <id
           name="id"
           column="id"
           type="java.lang.String"
       >
           <generator class="uuid.hex">
           </generator>
       </id>

       <property
           name="subjName"
           type="java.lang.String"
           update="true"
           insert="true"
           column="subj_name"
       />

       <set
           name="topics"
           lazy="false"
           inverse="false"
           cascade="all"
           sort="unsorted"
           order-by="date_time_posted"
       >

             <key
                 column="subj_id"
             />

             <one-to-many
                 class="forum.orm.Topic"
             />
       </set>

       <property
           name="description"
           type="java.lang.String"
           update="true"
           insert="true"
           column="subj_description"
       />

       <!--
           To add non XDoclet property mappings, create a file named
               hibernate-properties-Subject.xml
           containing the additional properties and place it in your merge dir.
       -->

   </class>

</hibernate-mapping>


А это то, с чем будем работать

Код

package forum.orm;

import java.io.Serializable;
import java.util.Set;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

/**
*  @hibernate.class
*   table = "subject"
*/
public class Subject implements Serializable {

   /** identifier field */
   private String id;

   /** nullable persistent field */
   private String subjName;
   
   private Set topics;
   
   private String description;

   /** full constructor */
   public Subject(String subjName) {
       this.subjName = subjName;
   }

   /** default constructor */
   public Subject() {
   }

   /**
    * @hibernate.id
    *  column = "id"
    *  generator-class = "uuid.hex"
 */
public String getId() {
       return this.id;
   }

   public void setId(String id) {
       this.id = id;
   }

   /**
    * @hibernate.property
    *  column = "subj_name"
 */
public String getSubjName() {
       return this.subjName;
   }

   public void setSubjName(String subjName) {
       this.subjName = subjName;
   }

   public String toString() {
       return new ToStringBuilder(this)
           .append("id", getId())
           .toString();
   }

   public boolean equals(Object other) {
       if ( !(other instanceof Subject) ) return false;
       Subject castOther = (Subject) other;
       return new EqualsBuilder()
           .append(this.getId(), castOther.getId())
           .isEquals();
   }

   public int hashCode() {
       return new HashCodeBuilder()
           .append(getId())
           .toHashCode();
   }

/**
 * @hibernate.set
 *  cascade = "all"
 *  order-by = "date_time_posted"
 * @hibernate.collection-key
 *  column = "subj_id"
 * @hibernate.collection-one-to-many
 *  class = "forum.orm.Topic"
 */
public Set getTopics() {
 return topics;
}

/**
 * @param set
 */
public void setTopics(Set set) {
 topics = set;
}

/**
 * @hibernate.property
 *  column = "subj_description"
 */
public String getDescription() {
 return description;
}

/**
 * @param string
 */
public void setDescription(String string) {
 description = string;
}

}


забыл добавить.
@hibernate - тэг XDoclet, после обработки которым получим map-xml по одному на каждый нужный класс

Это сообщение отредактировал(а) Шмель - 14.10.2004, 14:22
--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
3,14
Дата 14.10.2004, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: нет
Всего: 24



Я например под спроектированную в PowerDesigner-е БД автоматически получаю готовую библиотеку для работы с ней, делаю экспорт базы в XML, применяю к полученному XML уже сделанный XSLT шаблон и получаю mapping для hibernate, таким образом базовая библиотека для реализации логики уже готова, и не надо никаких SQL запросов писать.


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
ElectricalStorm
Дата 15.10.2004, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: нет
Всего: 9



Прикольная вещь. ;)


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
Wanderer2019
Дата 24.12.2004, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: нет
Всего: 17



модет и прикольная. но ниче не понял. в каких случаях лучше "hebirnate", а в каких по запросам строить?
PM ICQ MSN   Вверх
Nobody
Дата 26.12.2004, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 25.8.2003
Где: Россия, Москва

Репутация: 2
Всего: 16



Насколько я понял, hibernate - альтернатива EJB?


--------------------
Алгоритм помещения вопросов на форуме
Выражаем спасибо вот ТАК
Use the Source, Luke!
PM MAIL WWW ICQ   Вверх
Sleepy_PIP
Дата 26.12.2004, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 3
Всего: 12



Цитата(3)
Я например под спроектированную в PowerDesigner-е БД автоматически получаю готовую библиотеку для работы с ней, делаю экспорт базы в XML, применяю к полученному XML уже сделанный XSLT шаблон и получаю mapping для hibernate, таким образом базовая библиотека для реализации логики уже готова, и не надо никаких SQL запросов писать.

в приведенном - не увидел ни одного запроса.
А потом - исскуство писаниниы SQL еще никто не отменял. И я не уверен что хибернейт знает о структуре БД что-то больше, чем разработчик ...
"экспорт базы в XML, применяю к полученному XML уже сделанный XSLT шаблон и получаю mapping для hibernate, таким образом базовая библиотека для реализации логики уже готова, и не надо никаких SQL запросов писать" - вот это и не понятно. совсем. часто для получения удобоворимого результата по времени и данным приходится варировать как источники данных, так вплодь до синтаксиса самого запроса.
Если конечно все на уровне select t1.*, t2.* from table1 t1, table2 t2 where t1.id=t2.id - то тогда я понимаю ... а если копать гораздо глубже? где выясняется что ф. лучше селекта, или серект через пару-тройку таблиц лучше прямого селекта из одной таблицы? не. не понимаю, право слово ...
Как это тогда получается?

Это сообщение отредактировал(а) Sleepy_PIP - 26.12.2004, 20:33


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Се ля ви
Дата 18.1.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 1
Всего: 127



Суть hibernate в том, что она превращает реляционную БД в объектно-ориентированную. Это полная виртуализация хранения объектов - если hibernate нормально установлен и сконфигурирован, то внутри программы вы просто даёте ему объект в каком-то месте программы - и забываете о нём. Когда вам понадобилась ссылка на этот объект снова - просто запрашиваете объект у hibernate - и он вам его даёт. hibernate сам решает - класть его в БД или хранить в памяти - на основании частых или не очень вопросов к нему. Пользователя hibernate это ни коем образом не волнует - он работает только с API Hibernate. Пользователя даже вообще не должно волновать - в БД его объект, просто на винчестере сериализован, в памяти или где-то ещё - это полностью забота hibernate и определяется тем, кто его конфигурит и админит. Hibernate может и сам таблицы под любой передаваемый ему объект делать - при правильной настройке. Вот уже настройка hibernate - дело сложное...

SQL и Hibernate - это как С++ и Java - просто более высокий уровень взаимодействия ООП-Приложения с Базой Данных. Вопрос об оптимальности самого Hibernate - такой же больной, как и вопрос об оптимальности JVM. Но сам факт того, что программист не думает о том, как его объекты хранятся - сильно облегчает работу и позволяет лучше сосредоточится на бизнес-логике. :-)

Это сообщение отредактировал(а) Се ля ви - 18.1.2005, 16:49


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
jer1
Дата 25.4.2005, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 24.1.2005
Где: Харьков Украина

Репутация: нет
Всего: 5



Цитата

SQL и Hibernate - это как С++ и Java - просто более высокий уровень взаимодействия ООП-Приложения с Базой Данных. Вопрос об оптимальности самого Hibernate - такой же больной, как и вопрос об оптимальности JVM. Но сам факт того, что программист не думает о том, как его объекты хранятся - сильно облегчает работу и позволяет лучше сосредоточится на бизнес-логике. :-)


как Hibernate соотносится с ejb -
это другой подход?
спасибо
--------------------
:w!q
PM MAIL   Вверх
iskan
Дата 25.4.2005, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 16.3.2005

Репутация: нет
Всего: нет



Нет, это не другой подход.

CMP ( Container Managed Persistence ) во многих контейнерах реализуется при помощи
той или иной ORM а сдругой стороны вы тоже можете использовать ORM для реализации
BMP (Bean Managed Persistence )

PM MAIL   Вверх
Zandr
Дата 26.4.2005, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 1
Всего: 13



Цитата
Я например под спроектированную в PowerDesigner-е БД автоматически получаю готовую библиотеку для работы с ней, делаю экспорт базы в XML, применяю к полученному XML уже сделанный XSLT шаблон и получаю mapping для hibernate

Кошмар. Советую внимательно посмотреть в сторону XDoclet. Добавил в JavaDoc (вы ведь документируете ваш код? ) пару атрибутов, и задание в Ant - и все, все маппинги будут создаваться автоматом.
Цитата
как Hibernate соотносится с ejb

Hibernate - это механизм сохранения состояния объектов. EJB - это наворочнный RMI (удаленный вызов процедур) с кучей наворотов (транзакции, авторизация, кластеризация, .....). Ребята из hibernate предлагают вместо CMP юзать BMP с hibernate движком.
Цитата
И я не уверен что хибернейт знает о структуре БД что-то больше, чем разработчик ...

хибернейт может знать больше разработчика о том как лучше составить запрос (могу ошибаться)
Цитата
исскуство писаниниы SQL еще никто не отменял

А никто и не запрещал самому писать запросы (на HQL или нативном SQL), если выясняется, что хибернейтовская реализация - узкое место. Вопрос в том - насколько часто возникают такие вещи и насколько разработчик может улучшить результат таким образом.

PM MAIL   Вверх
3,14
Дата 26.4.2005, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: нет
Всего: 24



Цитата(Zandr @ 26.4.2005, 06:38)
Кошмар. Советую внимательно посмотреть в сторону XDoclet.

Обязательно посмотрю
Цитата(Zandr @ 26.4.2005, 06:38)
Цитата
И я не уверен что хибернейт знает о структуре БД что-то больше, чем разработчик ...

хибернейт может знать больше разработчика о том как лучше составить запрос (могу ошибаться)

ИМХО он просто избавляет от рутинной низкоуровневой работы, всё же в ООП легче работать с обьектной БД


Цитата(Zandr @ 26.4.2005, 06:38)
Цитата
исскуство писаниниы SQL еще никто не отменял

А никто и не запрещал самому писать запросы (на HQL или нативном SQL), если выясняется, что хибернейтовская реализация - узкое место. Вопрос в том - насколько часто возникают такие вещи и насколько разработчик может улучшить результат таким образом.

Я всю SQL-ную часть стараюсь выкидывать на сторону БД при помощи view, думаю что не совсем правильно когда код содержит SQL запросы, от этого читаемость кода заметно понижается.

Это сообщение отредактировал(а) 3,14 - 26.4.2005, 11:46


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
Zandr
Дата 27.4.2005, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 1
Всего: 13



Во многом согласен, конечно, но хранимые процедуры и вьюшки поддерживаются не всеми БД. Если нужна портируемость, то звиняйте.
PM MAIL   Вверх
Sleepy_PIP
Дата 6.6.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 3
Всего: 12



Граждане! извините зща глупый вопрос:
А где-б нарыть как можно больше примеров по Hibernate?
в гугле смотрел - толком ничего не нашел ...
Спаибо!


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java tools & IDE's | Следующая тема »


 




[ Время генерации скрипта: 0.1358 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.