powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как использовать SQL в проектах?
43 сообщений из 43, показаны все 2 страниц
Как использовать SQL в проектах?
    #38575254
daly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня вопрос по java-технологиям работы с БД.

До этого писал на pl/sql, но в скором времени возможностей языка перестало хватать и я решил "пересесть" на java.
Что мне нравилось в пл/скл так это то, что при изменении структуры БД весь код инвалидировался и становилось ясно что и где нужно поправить. Короче просто и железно.
В Java-мире мейнстримом, как я понимаю, является ORM. Но мне как человеку хорошо освоившему SQL, с его почти неограниченными возможностями, SQL-подобные языки (HQL, JPQL и пр. в том числе всякие Criteria) кажутся ущербными, неудобными, сильно ограниченными. Но в этом подходе есть явный плюс - ты получаешь валидацию этого маппинга на этапе сборки.
Я же решил не отказываться от своего любимого SQL и использовать его в чистом виде черзе Spring-овый jdbcTemplate.
Все меня устраивало до тех пор пока не понадобилось чуть-чуть подправить структуру: просто переименовать поле. И тут начилось...

В общем, вопрос в следующем. Есть ли технология которая позволит использовать нативный SQL и избавит от такого рода геморроя?

Теоретические размышления привели меня к выводу, что скорее всего единственным выходом является написание тестов для DAO методов. Тогда отсюда вывод: java программисты, либо вообще не используют sql, либо пишут к нему тесты, либо используют в тех проектах где схема не меняется :-)
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575277
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalyТогда отсюда вывод: java программисты, либо вообще не используют sql, либо пишут к нему тесты, либо используют в тех проектах где схема не меняется :-)

Надо просто понять, что схема БД вторична- это только отражение структуры объектов.
И правит её только java-разработчик.
Берём механизм обновления схем (забыл название) и всё- обновление схемы идёт вместе с кодом.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575294
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalyВ Java-мире мейнстримом, как я понимаю, является ORM.

Нет. Зависит от задачи. Для прикладных enterprise решений - ORM подходит.

dalyНо мне как человеку хорошо освоившему SQL, с его почти неограниченными возможностями, SQL-подобные языки (HQL, JPQL и пр. в том числе всякие Criteria) кажутся ущербными, неудобными, сильно ограниченными. Но в этом подходе есть явный плюс - ты получаешь валидацию этого маппинга на этапе сборки.

Есть такое.

dalyЯ же решил не отказываться от своего любимого SQL и использовать его в чистом виде черзе Spring-овый jdbcTemplate.

jdbcTemplate удобен для мелких локальных заплаток. Использовать его как глобальное решение для персистентного слоя я бы не стал.
Смотрие iBatis, QueryDSL и другие продвинутые обертки над JDBC.

dalyВсе меня устраивало до тех пор пока не понадобилось чуть-чуть подправить структуру: просто переименовать поле. И тут начилось...
Расскажите подробнее что именно началось.

dalyВ общем, вопрос в следующем. Есть ли технология которая позволит использовать нативный SQL и избавит от такого рода геморроя?

.NET Linq? :)

dalyТеоретические размышления привели меня к выводу, что скорее всего единственным выходом является написание тестов для DAO методов. Тогда отсюда вывод: java программисты, либо вообще не используют sql, либо пишут к нему тесты, либо используют в тех проектах где схема не меняется :-)
LiquiBase или flyway пользуете?
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575296
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominНадо просто понять, что схема БД вторична- это только отражение структуры объектов.

ИМХО, ошибочный подход к проектированию. БД и структура объектов и две разные модели предметной области.
Они проектируются отдельно или параллельно. И затем связываются. Делать БД отражением объектов это очень черновой подход.

Alexey TominИ правит её только java-разработчик.
Берём механизм обновления схем (забыл название) и всё- обновление схемы идёт вместе с кодом.
Liquibase\flyway
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575303
daly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я бы рад использовать ORM. Но это неудобно!
Я мог бы закрыть глаза на производительность и те запросы которые он плодит по 100 штук, если бы выигрывал или хотя бы не проигрывал в возможностях.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575319
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalyДа я бы рад использовать ORM. Но это неудобно!
Зависит от задачи.

dalyЯ мог бы закрыть глаза на производительность и те запросы которые он плодит по 100 штук
Обычная инертность. Новое тяжело изучать, тем более Java ORM.

dalyесли бы выигрывал или хотя бы не проигрывал в возможностях.
Дык, возможности надо узнать сначала, чтобы понять нужны они вам или нет.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575320
daly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczРасскажите подробнее что именно началось.
Сначала с помощью поиска по исходникам заменил прежнее название на новое.
Собрал проект и входе теста (через интерфейс приложения) обнаружил ошибку.
Опять залез в сорцы и сделал пропущенную замену. Вот и все.

BlazkowiczLiquiBase или flyway пользуете?
Не слышал. Погуглю.

BlazkowiczИМХО, ошибочный подход к проектированию. БД и структура объектов и две разные модели предметной области.
Они проектируются отдельно или параллельно. И затем связываются. Делать БД отражением объектов это очень черновой подход.
Здесь полностью с вами согласен.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575321
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А лично я - вообще против ОРМов. С порога.
На самом деле, это технология появилась достаточно давно. Ещё с дбф-файлами такое творили (ОРМ, то есть). Более-менее, устаканилось в VFP6 (в достаточно лохматом году).
ДБФки-то ничего не умели - просто файлы, а не серверная БД. Сейчас весьма просто получается организовать всю бизнес-логику именно средствами SQL. Насчёт "переносимости" кода - весьма спорная вещь, и глупая, к тому же. Потому что, кроме таблиц, в базе лежат всякие ограничения, триггеры и хранимые процедуры, что никакая "автоматика" никогда не справится.
Имхо, ясен пень.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575335
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Ну например мой опыт использования java и SQL(PL/SQL)
1.Напрямки писать код в java не следует
Надо разработать фреймвок.
У нас sql и pl/sql хранится в BLOP полях (легко корректируются программно)
а экранная форма отображения и CRUID(create,update,insert,delete) в xml файлах.
framwork их связывает.
Поменялась логика.(Добавили столбцы ...и т.д)
Подкорректировали файл xml,подкорректировал запрос в sql,и исполнение в pl/sql
Код на java вообще не меняется.
Ну а на более сложные изменение логики,уже смотрим по ситуации.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575341
daly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczdalyДа я бы рад использовать ORM. Но это неудобно!
Зависит от задачи.
Согласен. Я не критикую ORM-технологию в общем. Я оцениваю ее пользу применительно к моим задачам. Я разрабатываю приложение не с нуля, а используя готовую БД, которая проектировалась живет более 15 лет. Единого архитектора у этой БД нет. Поэтому структура ее корявая. Если бы я создавал структуру БД с нуля никаких бы проблем с ORM, я думаю, у меня не возникло бы.
BlazkowiczdalyЯ мог бы закрыть глаза на производительность и те запросы которые он плодит по 100 штук
Обычная инертность. Новое тяжело изучать, тем более Java ORM.

dalyесли бы выигрывал или хотя бы не проигрывал в возможностях.
Дык, возможности надо узнать сначала, чтобы понять нужны они вам или нет.
И здесь согласен. Когда начал работать используя ORM, неудобство списывал на неопытность. Думал сейчас опишу маппинг полста таблиц и будет мне счастье. Но счастье так и не наступило. Не все можно достать HQL запросом, приходилось какие то джины делать императивно - в цикле.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575462
Iliyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daly,

я наверно что-то не понимаю, но почему не переложить все более-менее сложные CRUID на хранимки? Валидацию также можно делать через перекомпиляцию хранимок.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575474
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alа экранная форма отображения и CRUID(create,update,insert,delete) в xml файлах.

Простите, чем create от insert отличается?
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575477
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iliyamя наверно что-то не понимаю, но почему не переложить все более-менее сложные CRUID на хранимки? Валидацию также можно делать через перекомпиляцию хранимок.
Create/Update действия зачастую связаны с очень толстыми процессами бизнес-логики. Писать бизнес-логику на расширениях SQL очень не удобно.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575514
Iliyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

код, обрабатывающий данные в БД, должен быть поближе к этим данным (не моё). Согласны? Я, честно говоря, не вижу противопоказаний, если это не работа с одной табличкой. Может поясните про "очень толстыми процессами бизнес-логики"? Наверняка все это можно разделить на считывание/запись каких дискретных значений из каких-нить источников, и на обработку(CRUD и селекты) этих данных.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575517
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalyСогласен. Я не критикую ORM-технологию в общем. Я оцениваю ее пользу применительно к моим задачам. Я разрабатываю приложение не с нуля, а используя готовую БД, которая проектировалась живет более 15 лет. Единого архитектора у этой БД нет. Поэтому структура ее корявая. Если бы я создавал структуру БД с нуля никаких бы проблем с ORM, я думаю, у меня не возникло бы.

Это да. ORM очень плохо совместимо со старой БД. Это ещё и работает х.з. как поди.
Придётся всё ручками, скорее всего.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575531
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iliyamкод, обрабатывающий данные в БД, должен быть поближе к этим данным (не моё). Согласны?

Да, но бизнес-процессы они не "обрабатывают данные в БД". В объектах точно так же есть данные и поведение, как можно ближе к ним. Так что безосновательное утверждение.

IliyamЯ, честно говоря, не вижу противопоказаний, если это не работа с одной табличкой. Может поясните про "очень толстыми процессами бизнес-логики"?
Поясню. Обычно Create/Update превращается в следующее.
- Сходить на FTP, стянуть CSV, сравнить с сохраняемым объектом
- Обновить Legacy базу данных деталями из новой системы (в той же транзакции с возможностью отката)
- Послать куда-нибудь SOAP запрос и сообщить об обновлении
- Сходить ещё в пару мест по неожиданным протоколам, чтобы считать\отправить данные.

При этом, в каждом случае нужно использовать одну и туже бизнес-логику, которая храниться в объектах. Например у меня в проекте есть сложные вычислимые свойства, которые нужны в 3х совершенно не связаных местах.

Я не говорю, что это всё не реализуемо в PL/T-SQL. Но в Java поддержка всевозможных протоколов, распраделенных транзакций и ООП намного интереснее.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575539
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczirbis_alа экранная форма отображения и CRUID(create,update,insert,delete) в xml файлах.

Простите, чем create от insert отличается?

Ничем ...я просто протупил. :-)
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575572
Iliyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДа, но бизнес-процессы они не "обрабатывают данные в БД". В объектах точно так же есть данные и поведение, как можно ближе к ним. Так что безосновательное утверждение.


Хорошо, бизнес-процесс получает результат, так? А если результатом должны быть средние значения каких-нить величин по определенным диапазонам других каких-нить величин, получаемых объединением пяти таблиц? А если этих величин много? Я специально написал "данные в БД". То что находится в объектах, может до БД никогда и не дойти.

BlazkowiczПоясню. Обычно Create/Update превращается в следующее.
- Сходить на FTP, стянуть CSV, сравнить с сохраняемым объектом
- Обновить Legacy базу данных деталями из новой системы (в той же транзакции с возможностью отката)
- Послать куда-нибудь SOAP запрос и сообщить об обновлении
- Сходить ещё в пару мест по неожиданным протоколам, чтобы считать\отправить данные.

При этом, в каждом случае нужно использовать одну и туже бизнес-логику, которая храниться в объектах. Например у меня в проекте есть сложные вычислимые свойства, которые нужны в 3х совершенно не связаных местах.

Я не говорю, что это всё не реализуемо в PL/T-SQL. Но в Java поддержка всевозможных протоколов, распраделенных транзакций и ООП намного интереснее.

не вижу противоречия с моими словами, что можно разделить на считывание/запись из источников (FTP и т.д.), и обработку в БД. Повторюсь, для простых операций не стоит городить огород, спорить не буду.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38575575
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IliyamХорошо, бизнес-процесс получает результат, так? А если результатом должны быть средние значения каких-нить величин по определенным диапазонам других каких-нить величин, получаемых объединением пяти таблиц? А если этих величин много? Я специально написал "данные в БД". То что находится в объектах, может до БД никогда и не дойти.

Вычисления оптимизированые в RDBMS, конечно же лучше делать в RDBMS.
Агрегаты по-хорошему вычисляются и считаются отдельно. Можно даже без БД, но с БД как-то надежнее.


Iliyamне вижу противоречия с моими словами, что можно разделить на считывание/запись из источников (FTP и т.д.), и обработку в БД. Повторюсь, для простых операций не стоит городить огород, спорить не буду.
Ну, это я к тому зачем мы все грызем кактус в виде ORM.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38577112
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalyВ общем, вопрос в следующем. Есть ли технология которая позволит использовать нативный SQL и избавит от такого рода геморроя?

Кстати, одной из таких технологий являются хранимые процедуры.
А вызывать их можно уж как угодно, у нас используют JDBC spring.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741085
st0ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jooq
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741263
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalyТеоретические размышления привели меня к выводу, что скорее всего единственным выходом является написание тестов для DAO методов. Тогда отсюда вывод: java программисты, либо вообще не используют sql, либо пишут к нему тесты, либо используют в тех проектах где схема не меняется :-)

РМД и ОМД это разные вещи.
Если пытаться напрямую "маппить" РМД на ОМД и наоборот, то получиться очень не удобно.
Поэтому для работы с РМД в ОМД делают прослойку, для преобразования сущностей РМД в сущности ОМД.
Т.н. слой DAO.
Это приводит к мысли к созданию "универсального DAO", т.е. создания ORM.
Так вот "универсал это тот кто делает все одинаково плохо".
Поэтому любой универсальный ORM - не подходит для чего-то чуть более сложного чем работа с парой таблиц.

Так что работайте с JdbcTemplate, а наименование полей вынесите в константы ;-)
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741315
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot mad_nazgul]dalyПоэтому любой универсальный ORM - не подходит для чего-то чуть более сложного чем работа с парой таблиц.
Так что работайте с JdbcTemplate, а наименование полей вынесите в константы ;-)
Просто любой инструмент нужно использовать с умом, там где это оправданно, а не пихать все модные слова в проект, т.к. нынче это в тренде.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741445
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiverПросто любой инструмент нужно использовать с умом, там где это оправданно, а не пихать все модные слова в проект, т.к. нынче это в тренде.

Ну, например для меня,Spring удобный фреймворк с кучей синтаксического сахара.
А вот JPA и Hibernate наоборот показались не удобными.
Оправдание ORM - это простейшие проекты, где РМД и ОМД совпадают.
Как только идет расхождение и из данных могут извлекаться различные объекты, то сразу ORM плавно перетекает в программирование ХП.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741481
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
Ну дак большинство проектов crud))
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741491
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ORM - для работы с данными и бизнес-логики
SQL, сохраненные процедуры - для аналитики
триггеры - не знаю, нужны ли сейчас, разве что для оперативного вычисления агрегированных значений
Естественно, четкого разделения нет, всё определяется конкретной задачей. Например,
бизнес-логика может активно использовать аналитические данные.

в то же время для аналитики могут применяться специальные инструменты типа OBI, где sql требуется только на этапе проектирования репозитория

тяжкое наследие в виде легаси года и супер изобретений предшественников. Бывает, попадаются базы с бизнес-локикой в километровых ХП, а бывает - "объектные" базы, типа того, что сделано в 1с. Тут ни ORM, ни SQL не помогут, только встроенный фреймворк
и т.п.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741500
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulКак только идет расхождение и из данных могут извлекаться различные объекты, то сразу ORM плавно перетекает в программирование ХП.Hibernate такое тоже умеет делать, не обязательно ХП писать.
Даже если никак без ХП не обойтись, то это ещё не повод выкинуть Hibernate.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741545
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For Allmad_nazgulКак только идет расхождение и из данных могут извлекаться различные объекты, то сразу ORM плавно перетекает в программирование ХП.Hibernate такое тоже умеет делать, не обязательно ХП писать.
Даже если никак без ХП не обойтись, то это ещё не повод выкинуть Hibernate.

Повод. Зачем нужен лишний слой, если можно без него?!
Возможности HQL намного меньше возможностей SQL.
Поэтому, то что можно сделать запросом SQL, в Hibernate приходиться писать ч/з ХП.
Так вот, зачем себя ограничивать, когда можно этого не делать?!
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741624
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulFor Allпропущено...
Hibernate такое тоже умеет делать, не обязательно ХП писать.
Даже если никак без ХП не обойтись, то это ещё не повод выкинуть Hibernate.

Повод. Зачем нужен лишний слой, если можно без него?!
Возможности HQL намного меньше возможностей SQL.
Поэтому, то что можно сделать запросом SQL, в Hibernate приходиться писать ч/з ХП.
Так вот, зачем себя ограничивать, когда можно этого не делать?!Чтобы понять есть ли ограничение (и от чего) нужно сперва оценить сколько % кейсов хорошо ложатся на хибер, а сколько % лучше сделать в ХП.
В большинстве проектов процент ХП (объективно востребованых) врядли перевалит за 15%, остальные 85% хибер сделает на ура.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741628
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All,

Щитоо такое ХП?
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741640
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smackmychiFor All,
Щитоо такое ХП?
Ну, Sproc, же.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741644
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

А, понял.

В студенческую пору была курсовая по БД, использовал хранимые процедуры, не понравилось =\
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741646
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smackmychiВ студенческую пору была курсовая по БД, использовал хранимые процедуры, не понравилось =\
Бывает.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741656
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно, можно совместить и хп и хибер но лучше однотипно, я предпочитаю хп - всё под твоим управлением . а для написания есть куча удобного соФта
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741683
daly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каким образом помогают ХП в работе с Hibernate? Что делают и что возвращают ХП?
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741685
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For AllЧтобы понять есть ли ограничение (и от чего) нужно сперва оценить сколько % кейсов хорошо ложатся на хибер, а сколько % лучше сделать в ХП.
В большинстве проектов процент ХП (объективно востребованых) врядли перевалит за 15%, остальные 85% хибер сделает на ура.

Старый добрый 80-20 :-)
Проблема в том, что они превращаются в 20-80 ;-)
Еще раз возможности HQL и Hibernate намного меньше чем у SQL.
В любом случае придется писать DAO слой.
Т.е. "конвертирование"/"маппирование" из ОМД в РМД.
Так зачем нужен ORM, если все равно объекты для работы с БД дальше DAO не идут?!
Понятно в связке ОМД <-> DAO <-> РМД хочется сделать универсальный слой DAO (ORM), но чаще всего это приводит
ОМД <-> DAO <-> ORM <-> ХП <-> РМД.
Т.е. добавляются два лишних слоя, ради "универсальности". :-)
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741708
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul,

Как говорил один мой доежистый преподаватель:"Программа должна делать только то, что должна делать"
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741721
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulFor AllЧтобы понять есть ли ограничение (и от чего) нужно сперва оценить сколько % кейсов хорошо ложатся на хибер, а сколько % лучше сделать в ХП.
В большинстве проектов процент ХП (объективно востребованых) врядли перевалит за 15%, остальные 85% хибер сделает на ура.Старый добрый 80-20 :-)
...
Понятно в связке ОМД <-> DAO <-> РМД хочется сделать универсальный слой DAO (ORM), но чаще всего это приводит
ОМД <-> DAO <-> ORM <-> ХП <-> РМД.15% (ну пусть 20) - это НЕ чаще, а как раз наоборот - достаточно редкий случайmad_nazgulЕще раз возможности HQL и Hibernate намного меньше чем у SQL.С этим никто не спорит. Предлагается обратить внимание насколько часто эти расширенные возможности (свех тех, что даёт Hibernate) реально востребованы.mad_nazgulТак зачем нужен ORM, если все равно объекты для работы с БД дальше DAO не идут?!Это также и бизнес объекты, они нужны в бизнес логике.
Делать две отдельные модели (одну для DAO, а другую для логики) - не рационально.
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741735
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalyКаким образом помогают ХП в работе с Hibernate? Что делают и что возвращают ХП?
я б так не говорил.
это отдельные логики.
хп могут делать всё, а возврашают набор/наборы записей, могут и не возвращать.
это как простав фунция - ты ей параметры, она тебе результат.
а могут они всёёёёё, в mssql даже очень и очень много, быстрее и проще.
в mysql несколько меньше, но тоже многое.
одно из преимуществ - полная (ну на 99.9999% ) защита от инъекций.
эта 0,00001% не правильное использование одной классной особенности....
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741739
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

А если в проекте необходимо реализовать возможность подключения базы SQLite?
ХП отсутствуют
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741783
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For AllЭто также и бизнес объекты, они нужны в бизнес логике.
Делать две отдельные модели (одну для DAO, а другую для логики) - не рационально.

Так их все равно делают!
Потому что РМД - это модель данных, над которой может быть реализовано несколько ОМД (Бизнес-логики)
От простейших CRUD, до BW.
Если приложение просто показать табличку и дать возможность отредактировать, то да ORM попадает 100%.
Как только нужно реализовать что-то более сложное, так сразу ORM становиться такими гирями, что для работы с ORM приходится обкладывать ее кучей костылей в виде ХП.
Это приводит к тому, что часть БЛ переходит в СУБД.
И тут происходит,то о чем говорят здесь. Проще бывает реализовать БЛ в виде ХП, чем пытаться сделать ее ч/з ORM.
Т.е. все больше и больше "кусков" БЛ идет в СУБД и возникает вопрос зачем нам Java, когда и ОМД и РМД реализованы в СУБД?!
Пример такого подхода Oracle. В нем можно писать двухуровневые трехуровневые приложения. :-)
Поэтому ORM - зло!
ORM - дает ложную "простоту" работы с БД.

P.S. ХП - зло ;-)
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38741843
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smackmychiвадя,

А если в проекте необходимо реализовать возможность подключения базы SQLite?
ХП отсутствуют

тут всё заключено в задаче, в тех проектах, что у меня, sqlite просто не катит, поэтому у меня нет такой проблемы
...
Рейтинг: 0 / 0
Как использовать SQL в проектах?
    #38742271
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самый "дубовый и надежный" вариант - действительно, DAO на JdbcTemplate (или другой удобной обертке) плюс тесты на все методы DAO.
Дальше уже возможны варианты. При наличии "старой и корявой базы" может иметь смысл наличие слоя хранимок, выдающих/обновляющих данные в приличном формате. Главное, чтобы в них не было бизнес-логики.

Плюсы - быстродействие, изоляция приложения от структуры базы. Минусы - больше букв в целом, разработчикам будут нужны отдельные базы, нужно придумывать схемы версионного накатывания хранимок, не всегда загружаемые данные укладываются в плоскую структуру возвращаемых параметров ХП. Ах да, еще тесты на DAO все равно придется писать :).
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Как использовать SQL в проектах?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]