Модераторы: 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   Вверх
Се ля ви
Дата 6.6.2005, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Sleepy_PIP @ 6.6.2005, 13:10)
Граждане! извините зща глупый вопрос:
А где-б нарыть как можно больше примеров по Hibernate?
в гугле смотрел - толком ничего не нашел ...
Спаибо!

А на http://hibernate.ru не пробовал искать? smile


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

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


Опытный
**


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

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



Цитата
Цитата(Sleepy_PIP @ 6.6.2005, 13:10)
Граждане! извините зща глупый вопрос:
А где-б нарыть как можно больше примеров по Hibernate?
в гугле смотрел - толком ничего не нашел ...
Спаибо!

А на http://hibernate.ru не пробовал искать? smile

Вах! СПАСИБО!!! smile


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


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


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

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



Цитата(Sleepy_PIP @ 6.6.2005, 14:12)
Вах! СПАСИБО!!!

Пожалуйста smile Надеюсь, поможет!

P.S. Сам по нему хибернейт изучал в своё время.


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

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


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



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

А что за XSLT шаблон?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
VDe
Дата 6.6.2005, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



это именнованый шаблон как функция.

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

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


Эксперт
***


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

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



Думаю что LSD имеет ввиду готовый пример, как восстановлю винч, так закину его сюда


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


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(3)
Думаю что LSD имеет ввиду готовый пример, как восстановлю винч, так закину его сюда

Именно smile
Жду


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Sleepy_PIP
Дата 8.6.2005, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не понял по поводу генераторов ...
общий вид:
<id name="id" type="long" column="uid" unsaved-value="0">
<generator class="net.sf.hibernate.id.TableHiLoGenerator">
<param name="table">uid_table</param>
<param name="column">next_hi_value_column</param>
</generator>
</id>

где и как мне сказать что я хочу использовать секвернсор (оракловый), имеющий конкретное имя, а? причем имя - со схемой ...
Спасибо!





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


Бывалый
*


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

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



наверное, что нибудь типа такого:
Код

<id name="id" type="long" column="uid" unsaved-value="0">
  <generator class="sequence">
    <param name="sequence">sequence_name</param>
  </generator>
</id>


тут написано - мануал

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


Опытный
**


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

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



Добавлено @ 11:55
Цитата
наверное, что нибудь типа такого:
Код

<id name="id" type="long" column="uid" unsaved-value="0">
  <generator class="sequence">
    <param name="sequence">sequence_name</param>
  </generator>
</id>


тут написано - мануал

ссылка кажет на
http://file///opt/java/hibernate/doc/refer...ngle/index.html
и не открывается.
но доки у меня есть.
Спасибо за наставление на правильный путь!

Это сообщение отредактировал(а) Sleepy_PIP - 8.6.2005, 11:55


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


Бывалый
*


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

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



прошу прощения за линк smile
мануал
--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
Sleepy_PIP
Дата 22.6.2005, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
Пример
Это 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 по одному на каждый нужный класс

блиин. выручай!
никак не могу заставить ant с подкл. XDoclet-ом генерить маппинг по файлу класса ...

вот что в build.xml:
....
<target name="xdoclet-hibernate" depends="clear-mappings,prepateforhibernate">
<description>
Generate Hibernate mappings
using XDoclet
</description>

<taskdef name="hibernatedoclet"
classname="xdoclet.modules.hibernate.HibernateDocletTask"
classpathref="hibernate.generation.classpath"/>

<!-- @see http://xdoclet.sourceforge.net/xdoclet/ant...DocletTask.html -->
<hibernatedoclet
destDir="${project.hibernate.mapping.dir}"
mergeDir="${project.hibernate.templates.dir}"
excludedtags="@version,@author,@param,@return,@throws"
force="true"
verbose="true">

<fileset dir="${src}/com/pip" includes="**/*.java">
<selector>
<contains text="@hibernate"/>
</selector>
</fileset>

<!-- Generate all the mappings -->
<hibernate
version="3.0">
</hibernate>

</hibernatedoclet>
</target>

вот что в классе:
Код

public class User
{
    private String nickName;
    private String uName;
    private String iFAM;
    private String iNAME;
    private String iOTC;
    private String eMail;
    private Date date_Create;
    private Date date_LC;
    private Set phones = new HashSet();
    private Set addreses = new HashSet();
    private boolean active;
    private long idu;

    /**
    *  @hibernate.class
    *   table = "USERS" 
    */


    /**
     * @hibernate.id  
     *      generator-class="native"
     *      column="IDU"  
    */
    public long getIdu()
    {
        return idu;
    }
  
.....



вот что при запуске Ant-а
C:\pipw\mmolo\java>ant xdoclet-hibernate
===========
Buildfile: build.xml

clear-mappings:

prepateforhibernate:

xdoclet-hibernate:
[hibernatedoclet] (XDocletMain.start 47 ) Running <hibernate/
>

BUILD SUCCESSFUL
Total time: 3 seconds

C:\pipw\mmolo\java>
===========
и _все_ в dest каталоге - пусто. ф. находит, т.к. если
сказать
<selector>
<contains text="public"/>
</selector>
имеем:
==================
Buildfile: build.xml

clear-mappings:

prepateforhibernate:

xdoclet-hibernate:
[hibernatedoclet] (XDocletMain.start 47 ) Running <hibernate/
>
[hibernatedoclet] INFO: Some classes refer to other classes that were not fou
nd among the sources or on the classpath.
[hibernatedoclet] (Perhaps the referred class doesn't exist? Hasn't bee
n generated yet?)
[hibernatedoclet] The referring classes do not import any fully qualifi
ed classes matching these classes.
[hibernatedoclet] However, since no packages are imported, xjavadoc has
assumed that the referred classes
[hibernatedoclet] belong to the same package as the referring class. Th
e classes are:
[hibernatedoclet] C:\pipw\mmolotok\java\src\com\pip\dbobjects\PoweredUser.java -
-> User qualified to com.pip.dbobjects.User
[hibernatedoclet] C:\pipw\mmolotok\java\src\com\pip\dbobjects\PoweredUser.java -
-> User qualified to com.pip.dbobjects.User

BUILD SUCCESSFUL
Total time: 3 seconds
=====================

что я не правильно делаю??
Спасибо!




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


Опытный
**


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

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



Извините. сам разобрался ...


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


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



А поделится ? smile
PM MAIL WWW ICQ   Вверх
Sleepy_PIP
Дата 22.6.2005, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AntonSaburov @ 22.6.2005, 17:43)
А поделится ? smile

да, да. извините!
Привожу _рабочий_ пример

build.xml:

Код

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="rebuild" name="mmolotok.jpx">
  <property name="jbuilder.home" value="C:/JBuilder2005"/>
  <property name="jdk.home" value="${jbuilder.home}/jdk1.4"/>
  <property name="dest" value="classes.ant"/>
  <property name="Generated.Source" value="${dest}/Temporary_Files"/>
  <property name="hibernate.home" value="C:/hibernate-3.0/lib"/>
  <property name="Oracle.JDBC.home" value="C:/ora92/jdbc/lib"/>
  <property name="src" value="src"/>

  <property name="project.hibernate.mapping.dir" value="src/xdhbmap"/>
  <property name="project.hibernate.templates.dir" value="src/xdhbmap/tpl"/>
  <property name="project.hibernate.cfg.dir" value="src/xdhbmap"/>
  <property name="xdoclet.lib.dir" value="C:/xdoclet-1.2.3/lib"/>

<target name="xdoclet-hibernate" depends="clear-mappings,prepateforhibernate">


    <!-- Define the hibernatedoclet task -->
          <taskdef name="hibernatedoclet" 
            classname="xdoclet.modules.hibernate.HibernateDocletTask">
            <classpath>
              <fileset dir="${xdoclet.lib.dir}">
                  <include name="*.jar"/>
              </fileset>
            </classpath>
          </taskdef>

      <!-- @see http://xdoclet.sourceforge.net/xdoclet/ant/xdoclet/modules/hibernate/HibernateDocletTask.html -->
      <hibernatedoclet
        destDir="${project.hibernate.mapping.dir}"
        excludedtags="@version,@author,@param,@return,@throws"
        force="true"
        verbose="true">
    
        <fileset dir="${src}" includes="**/*.java">
          <selector>
            <contains text="@hibernate"/>
          </selector>
        </fileset>
    
        <!-- Generate all the mappings    -->
        <hibernate
          version="3.0">
        </hibernate>
    
      </hibernatedoclet>
</target>
    
    <!--  Delete all the old mappings and hibernate.cfg.xml -->
<target name="clear-mappings">
      <delete >
        <fileset dir="${project.hibernate.mapping.dir}" >
               <include name="**/*.hbm.xml"/>
        </fileset>

      </delete>

</target>
    
<target name="prepateforhibernate">
      <!-- Path for generating hibernate mappings -->
      <!-- Here, includes all the xdoclet libs which are required for mappings generation -->
      <path id="hibernate.generation.classpath">
        <fileset dir="${xdoclet.lib.dir}">
          <include name="*.jar"/>
        </fileset>
      </path>
    
      <!-- (Re)create the cfg dir to avoid "not found" errors -->
      <mkdir dir="${project.hibernate.cfg.dir}"/>
      <!-- (Re)create the mappings dir to avoid "not found" errors -->
      <mkdir dir="${project.hibernate.mapping.dir}"/>
</target>

</project>




звпуск - ant xdoclet-hibernate

ну естественно надо обратить внимание на пути.
сам проект лежит так:
/java/...
т.е. src - это .../java/src



и пример простейшего класса:
Код

package com.pip.dbobjects;


import java.io.Serializable;
import java.sql.Date;
import java.util.HashSet;
import java.util.Set;

/**
*  @hibernate.class
*   table = "USERS"
*/
public class User implements Serializable
{
    private String nickName;
    private String uName;
    private String iFAM;
    private String iNAME;
    private String iOTC;
    private String eMail;
    private Date date_Create;
    private Date date_LC;
    private Set phones = new HashSet();
    private Set addreses = new HashSet();
    private boolean active;
    private long idu;



    //=============================================================================
    public User()
    {
    }

    public void setNickName(String nickName)
    {
        this.nickName = nickName;
    }

    public void setUName(String uName)
    {
        this.uName = uName;
    }

    public void setIFAM(String iFAM)
    {
        this.iFAM = iFAM;
    }

    public void setINAME(String iNAME)
    {
        this.iNAME = iNAME;
    }

    public void setIOTC(String iOTC)
    {
        this.iOTC = iOTC;
    }

    public void setEMail(String eMail)
    {
        this.eMail = eMail;
    }

    public void setDate_Create(Date date_Create)
    {
        this.date_Create = date_Create;
    }

    public void setDate_LC(Date date_LC)
    {
        this.date_LC = date_LC;
    }

    public void setPhones(Set phones)
    {
        this.phones = phones;
    }

    public void setAddreses(Set addreses)
    {
        this.addreses = addreses;
    }

    public void setActive(boolean active)
    {
        this.active = active;
    }

    public void setIdu(long idu)
    {
        this.idu = idu;
    }

    /**
      * @hibernate.property
      *  column = "NICKNAME"
   */
    public String getNickName()
    {
        return nickName;
    }

    public String getUName()
    {
        return uName;
    }

    public String getIFAM()
    {
        return iFAM;
    }

    public String getINAME()
    {
        return iNAME;
    }

    public String getIOTC()
    {
        return iOTC;
    }

    public String getEMail()
    {
        return eMail;
    }

    public Date getDate_Create()
    {
        return date_Create;
    }

    public Date getDate_LC()
    {
        return date_LC;
    }

    public Set getPhones()
    {
        return phones;
    }

    public Set getAddreses()
    {
        return addreses;
    }

    public boolean isActive()
    {
        return active;
    }

    /**
     * @hibernate.id
     *      generator-class="native"
     *      column="IDU"
    */
    public long getIdu()
    {
        return idu;
    }
}



обратите внимание на расположение и обязательность
/**
* @hibernate.class
* table = "USERS"
*/

плюс к этому -
все
/**
* @hibernate.id
* generator-class="native"
* column="IDU"
*/
и подобные, относящиеся к каждой проперти надо ставить непоср. перед get-терами.

и вот результат:
Код

<?xml version="1.0" encoding="UTF-8"?>

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

<hibernate-mapping
>
    <class
        name="com.pip.dbobjects.User"
        table="USERS"
    >

        <id
            name="idu"
            column="IDU"
            type="long"
        >
            <generator class="native">
              <!--  
                  To add non XDoclet generator parameters, create a file named 
                  hibernate-generator-params-User.xml 
                  containing the additional parameters and place it in your merge dir. 
              --> 
            </generator>
        </id>

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

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

    </class>

</hibernate-mapping>


более подробно про XDoclet'овские теги для Хибернейта читать тут:
http://xdoclet.sourceforge.net/xdoclet/tag...rnate-tags.html

PS: важное замечание! - синклюдить данный build.xml в головной build.xml директивой <include file=... />
мне не удалось. ругается на тэг <target - даже если он пустой! так что рекомендую данный пример просто добавлять в коней своих build.xml ...

PPS: кстати у Xdoclet-оского тега @hibernate.mapping разумеется не обнаружилость свойства package - врезультате, _везде_ где есть слово class= мы вынуждены писать полное имя класса. При этом замечу - сам hibernate - отлично понимает и package и сокращенное имя класса. но увы и ах! - один не разумеет что творит другой, и все ложится на плечи разработчика smile)) ... это даже не шутка ...

Это сообщение отредактировал(а) Sleepy_PIP - 22.6.2005, 21:45


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


Unregistered











smile smile плиз пример по Хибернейту, а лучше несколько самых примитивных
  Вверх
batigoal
Дата 25.7.2005, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Например, тут было:
http://forum.vingrad.ru/index.php?showtopic=57659


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
pebehb
Дата 19.1.2006, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня Eclipse+Hibernate
Может кто сталкивался с необходимостью просмотреть информацию в БД через Hibernate?
PM MAIL   Вверх
pebehb
Дата 20.1.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Се ля ви @ 6.6.2005, 14:05)
Цитата(Sleepy_PIP @  6.6.2005,  13:10)
Граждане! извините зща глупый вопрос:
А где-б нарыть как можно больше примеров по Hibernate?
в гугле смотрел - толком ничего не нашел ...
Спаибо!

А на http://hibernate.ru не пробовал искать? smile

Походу hibernate.ru больше не работает, может инфорацию кто перенёс на другой сайт ?
PM MAIL   Вверх
LSD
Дата 21.1.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(pebehb @ 20.1.2006, 17:18 Найти цитируемый пост)

Походу hibernate.ru больше не работает, может инфорацию кто перенёс на другой сайт ?

У меня есть копия этого сайта, сделаная около полугода назад.

hibernate.rar (2,5Mb).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
pebehb
Дата 23.1.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(LSD @ 21.1.2006, 17:07 Найти цитируемый пост)

У меня есть копия этого сайта, сделаная около полугода назад.


Большое спасибо!!! smile
PM MAIL   Вверх
Се ля ви
Дата 24.1.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



И от меня Thanx.

И всё-таки интересно - что с ним сталось?.. Неужели просто отрубили - и всё?

Вообще Hibernate вроде бы JBoss перекупил (если изначально не владел) - но у них на сайте весит предложение помогать переводить доку на русский - а что, не могли проспонсировать этот сайт, что бы хотя бы просто висел? Или нынешняя версия так сильно отличается от 2.1, что эта документация вообще не годится и надо всё переводить заново?..


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

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


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Страницы: (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.1553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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