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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Statement vs Session, или на сколько страшно не использовать H 
V
    Опции темы
Platon
Дата 6.12.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Здравствуйте, уважаемые.

Не хочу показаться глупым, но мне кажется, что использование Hibernate меня как-то ограничивает. У меня 3 причины думать так:
1. Необходимо пройти специализированные курсы (или самостоятельно не один день посидеть над книжками), чтоб не запороть проект, надеясь, что Hibernate сделает за тебя всё правильно.
2. 10-15 % производительности тоже не лишние. (слабый аргумент, но озвучить стоит)
3. Пропадает свобода (правда частичная) в смысле UserType, специфических запросов так просто уже не получить :( а жаль. (собствено ради этого пункта я и создал тему)

Есть много чего хорошего в hibernate, безусловно... но как быть с 3-м пунктом?
PM MAIL ICQ   Вверх
Platon
Дата 6.12.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Чего темнить, задам пример:
3 таблички:
car_mark
record_id
name
<...>

car_model
record_id
mark_id
name
<...>

cars
record_id
model_id
<...>

Задачка заключается в том, чтобы подсчитать количество тачек определенной марки.
Запрос выполняется вот такой:
Код

SELECT mark_id, COUNT( * )
FROM car_mark
LEFT JOIN car_model ON car_mark.record_id = car_model.mark_id
RIGHT JOIN car ON car.model_id = car_model.record_id
GROUP BY mark_id




Это сообщение отредактировал(а) Platon - 7.12.2007, 00:18
PM MAIL ICQ   Вверх
check
Дата 7.12.2007, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Platon,  можно ведь использовать native SQL.

Добавлено через 1 минуту и 40 секунд
Конечно тогда не будет переносимости между разными СУБД.
PM MAIL   Вверх
COVD
Дата 7.12.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

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



Цитата

Не хочу показаться глупым, но мне кажется, что использование Hibernate 


Это большой философский вопрос, потому что вместо последнего (Hibernate) можно много чего подставить.  smile  Я только не понял, где здесь Statement и Session? Наверное потому, что никогда не пользовался Hibernate (не разобрался пока. Наверное, должно быть страшно, но пока петух не клюнул). Когда обнаруживается рутина в работе, тогда и появляется стимул к освоению инструментов, избавляющих от нее. 

Это сообщение отредактировал(а) COVD - 7.12.2007, 01:03
PM MAIL   Вверх
tux
Дата 7.12.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Такой запрос легко перенести на HQL. Не вижу проблем. Специфичные для СУБД вещи конечно используя Hibernate реализовать не удастся, там ведь никто и не заставляет использовать его всегда. Просто нужно искать какой-то компромис - там где выгоднее использовать HQL, использовать его, а остальных случаях использовать native SQL. Вот и все. Кто кого ограничивает мне не понятно. 

Цитата(Platon @  6.12.2007,  22:59 Найти цитируемый пост)
Необходимо пройти специализированные курсы (или самостоятельно не один день посидеть над книжками), чтоб не запороть проект, надеясь, что Hibernate сделает за тебя всё правильно.

Извиняюсь, а на Java ты моментально писать начал. Насколько я понимаю использование любой тулзы требует определенного времени на изучение. И тебе решать что тебе важнее - выгода от ее использование или потраченное время. Опять-таки не понимаю в чем ограничения. У тебя полная свобода выбора.
PM MAIL Skype GTalk Jabber YIM   Вверх
SoulKeeper
Дата 7.12.2007, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

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



Тема довольно интересная smile Давно поглядываю в сторону Hibernate, но никак руки не доходят, хотя то что у них на сайте написано звучит очень даже заманчиво. Хотелось бы услышать отзывы\сравнения о преймущаствах\недостатках технологий.
PM MAIL   Вверх
w1nd
Дата 7.12.2007, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

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



Цитата(Platon @  6.12.2007,  22:59 Найти цитируемый пост)
10-15 % производительности тоже не лишние.

Откуда такая цифра?




--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
tux
Дата 7.12.2007, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Цитата(SoulKeeper @  7.12.2007,  01:04 Найти цитируемый пост)
Хотелось бы услышать отзывы\сравнения о преймущаствах\недостатках технологий. 

Сравнения с чем? 

Любая библиотека/технология применима, подходит или не подходит в конкретных условиях, в конкретном проекте или задаче. Я могу сказать "Hibernate - это супер, используйте и радуйтесь", а кто-то другой "Hibernate - отстой, все что делали с его использованием пришлось переделать" потому что Hibernate использовался неоправданно или просто неправильно. И оба будем по-своему правы. Ну и какого сравнения ты ждешь? Получишь набор диаметрально противоположных мнений и все, как их потом фильтровать? Расскажи подробно о задаче, в которой ты собираешься его использовать, может быть что-нибудь посоветуем. Это касается не только Hibernate, а вообще любой технологии.

Добавлено через 3 минуты и 32 секунды
Цитата(w1nd @  7.12.2007,  02:00 Найти цитируемый пост)
Откуда такая цифра?

По-моему хибернейтовцы сами где-то на сайте писали про 10%. Сейчас наверное не найду упоминания. Цифра, конечно, странная. smile
PM MAIL Skype GTalk Jabber YIM   Вверх
serger
Дата 7.12.2007, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(tux @ 7.12.2007,  02:06)
По-моему хибернейтовцы сами где-то на сайте писали про 10%. Сейчас наверное не найду упоминания. Цифра, конечно, странная. smile

Для отчётности ;)


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Platon
Дата 7.12.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Ну, блин, полуночники!!!

check, весьма познавательная стетейка.

Цитата(COVD @  7.12.2007,  01:35 Найти цитируемый пост)
Я только не понял, где здесь Statement и Session?

Литературный прием ;) Statement и Session как олицетворение JDBC и Hibernate соответственно.

На самом деле, мое мнение о hibernate крайне положительное. Всё-таки как не крути, а все объекты из БД проецируются в память наиболее естественным образом. Приятно удивило, что в пределах 1-й сессии вызов get() ссылается на 1 и тот же объект, приятно, что есть возможность создания наиболее естественным образом иерархии классов, связь объектов и много чего другого...

Но что-то консервативное во мне отвергает его.

Добавлено через 9 минут и 35 секунд
по статье native SQL, ч понял, что можно использовать этот финт:
Код

sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))

На сколько я понял, этот CatDTO не является персистентной сущностью?
PM MAIL ICQ   Вверх
Platon
Дата 7.12.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Что-то не получается поработать с рефлексией:
Код

public class Test {
    public static void main(String[] args) {
        HibernateUtil.init();
        Query q = HibernateUtil.getSession().createSQLQuery("SELECT car_mark.record_id, car_mark.name, COUNT( * ) AS amount " +
                "FROM car_mark " +
                "LEFT JOIN car_model ON car_mark.record_id = car_model.parent_id " +
                "RIGHT JOIN car ON car.model_id = car_model.record_id " +
                "GROUP BY car_mark.record_id").setResultTransformer(Transformers.aliasToBean(Mon.class));
        List l = q.list();
        System.out.println(l);
    }
}

public class Mon {
    public long record_id;
    public String name;
    public int amount;

    public Mon() {    }

    public Long getRecord_id() {
        return record_id;
    }

    public void setRecord_id(Long record_id) {
        this.record_id = record_id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAmount() {
        return amount;
    }

    public void setAmount(int amount) {
        this.amount = amount;
    }
}


Цитата

Exception in thread "main" org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of platon.yanaidu.test.Mon.record_id

PM MAIL ICQ   Вверх
SoulKeeper
Дата 7.12.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

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



Цитата(tux @  7.12.2007,  02:06 Найти цитируемый пост)
Сравнения с чем? 


В теме и в первом посте написано что с чем ;)
PM MAIL   Вверх
alexadr
Дата 7.12.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



также жду решения проблемы с данным запросом!
PM MAIL   Вверх
w1nd
Дата 7.12.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

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



Мэппинг на бочку smile


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
tux
Дата 7.12.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Цитата(SoulKeeper @  7.12.2007,  10:59 Найти цитируемый пост)
В теме и в первом посте написано что с чем ;) 

Цитирую для лучшей усвояемости.

Цитата(Platon @  6.12.2007,  22:59 Найти цитируемый пост)
Не хочу показаться глупым, но мне кажется, что использование Hibernate меня как-то ограничивает. У меня 3 причины думать так:
1. Необходимо пройти специализированные курсы (или самостоятельно не один день посидеть над книжками), чтоб не запороть проект, надеясь, что Hibernate сделает за тебя всё правильно.
2. 10-15 % производительности тоже не лишние. (слабый аргумент, но озвучить стоит)
3. Пропадает свобода (правда частичная) в смысле UserType, специфических запросов так просто уже не получить :( а жаль. (собствено ради этого пункта я и создал тему)

Внимание, вопрос. Hibernate нужно сравнить с UserType, специализированными курсами, книжками, третьим пунктом, 10-ю процентами или "запороть проект"?
PM MAIL Skype GTalk Jabber YIM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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