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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JPA 2.0 и хранимые процедуры 
:(
    Опции темы
javastic
Дата 10.10.2011, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



Я думаю что в JPA и Hibernate не встроена поддержка ХП чисто из-за _переносимости_ приложения!!!!  Если мы вставляем бизнес логику в ХП например Оракла, то для реализации на MySQL придется все хранимые процедуры переписывать!!!! А это не ГУД!
Проще всего создать пакеты "бла-бла-бла.sp" и "бла-бла-бла.function"  и держать там реализацию бизнес-логики написанную с использованием технологий JPA или Hibernate (или прочих). Только в этом случае приложение может иметь различные источники хранения данных.

P.S.:
И ещё. Для тех кому нужно перелапачивать в конце дня какие-то массивы данных, то нужно понимать что для таких задач нужно использовать спец средства которые занимаются именно этой задачей. Например Oracle Financial Analyzer. Или приложения которые лепят кубы и их срезы. Для каждой БД должны быть свои средства, если нет то нужно их написать или заказать. А из простого приложения формировать какие-то сложные расчеты это IMHO не правильно. Максимум что должно уметь приложение, это формировать _простые_ печатные формы и то не факт, не даром выпускают всякие там Crystal Report'ы.

Это сообщение отредактировал(а) javastic - 10.10.2011, 13:06


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Skipy
Дата 11.10.2011, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
to hamsterKSU

То что вы написали, это некоторый идеальный взгляд на простое приложение.


Нет. Это описания ниши использования JPA

Цитата
1. В случаях, когда структура базы данных сложна и приложение тяжело нагружено, приходится использовать специфику базы для повышения производительности.


Разработчики JPA думали об этом, это ломает их концепцию.

Цитата
2. Приложению обычно требуется выполнять некоторые операции над множеством данных в базе в пакетном режиме. Пример- закрытие операционного банковского дня, когда надо рассчитать остатки по множеству счетов. Что прикажете "гонять" по сети данные для этой операции только потому, что не хотите вызывать хранимые процедуры?


Да, гонять. В противном случае ломается концепция JPA.

Цитата
3. Представьте себе базу с терабайтами данных, когда требуется периодически и эффективно выполнять весьма специфические задачи над массой данных. Отказываться в таком случае от использования хранимых процедур просто безобразие.


Разработчики JPA думали об этом, это ломает их концепцию.

Цитата
4. Другое дело, что результаты работы хранимых процедур как правило не должны попадать в контекст постоянства, а значит они слабо связаны с основным назначением ORM.


Именно. В JPA возникнет множество сложностей реализации.

Цитата
Хотя я полагаю разработчики JPA не правы, что упускают ХП из виду вовсе.


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

P.S. Представьте себе топор. У него удобная ручка чтобы рубить. А Вы его решили зазубрить и пилить им. И жалуетесь на разработчиков топора, которые не подумали о прикреплении удобной ручки с торца топорища.

Добавлено через 2 минуты и 4 секунды
Цитата(COVD @ 12.5.2010,  02:37)
архитектуру приложения надо приспосабливать к идее ORM. А не наоборот.

Увы, с наличием сотен миллионов строк и необходимостью с ними работать Вы ничего не сделаете. Это данность. И ни один ORM тут не поможет.

Добавлено через 5 минут и 7 секунд
Цитата(mbasil @ 12.5.2010,  09:42)
4.    В защиту Hibernate наверное стоит сказать, что "lazy loading" не сложно отменить. Они попытались сделать контекст постоянства кэшем первого уровня, которым можно было бы "тонко" управлять.

Эта задача решения не имеет. Для обеспечения максимальной производительности необходимо в каждом запросе вычитывать только те поля, которые нужны здесь и сейчас. Т.е. lazy loading необходимо регулировать для каждого поля объекта в каждом запросе. Это недостижимо и совершенно не укладывается в концепцию легкой работы с объектами.


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
En_t_end
Дата 11.10.2011, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Кратко, EclipseLink как провайдер поддерживает вызов хранимых процедур: http://en.wikibooks.org/wiki/Java_Persiste...ored_Procedures

Что касается архитектуры. Думаю, если следить за дизайном, то не должно быть проблем переписать узкие места в контроллерах, вызвав где надо хранимую процедуру либо выполнив native query.

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

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

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


 




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


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

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