|
|
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Добрый день! Стоит задача мигрировать с клиент-сервера (делфи+оракл) на Jаva EE. Опыт промышленной разработки с Java EE отсутствует. В существующей системе подход к созданию объектов-сущностей примерно такой: Существует обобщенный список видов зарегистрированных сущностей, около 200 шт., который хранится в виде таблицы БД. И существует общий список зарегистрированных действий (тоже в виде таблицы БД, около 2000 шт), которые система позволяет выполнять их пользователям над сущностями. При выполнении действия в истории действий над сущностями остается след: кто выполнял, во сколько, с какой рабочей станции и т.п. Поддерживается также историчность и версионность изменений. Действия выполняются, как правило, в транзакции БД, и своим выполнением они изменяют состояние сущности. Такая модель понятна и пользователям, и разработчикам, и на практике реализация новой функциональности сводится к тому, что мы оговариваем какие новые виды сущностей (атрибуты, характеристики) и действий добавляются в систему, ну и оговариваем функциональность самих действий (когда можно выполнять, когда нельзя) Простые объекты-сущности могут храниться в одной таблице БД, более сложные сущности могут быть размазаны по десятку таблиц БД. Это и какие-то графики, и тарифы, и ставки, и много-много всего. Объектная реализация сущностей и действий над ними абстрактно выглядит следующим образом. Есть общие объекты-предки для сущности и действия, в которые помещена базовая функциональность по сохранению и зачитыванию сущности в\из БД. Перечислю только основные процедуры в базой сущности: - SaveEntity – сохраняет сущность в БД. В основном, в этой процедуре шлются инсерты и апдейты БД - LoadEntity – загружает сущность из БД. Здесь в основном селекты. - ShowEntityForm – показывает карточку сущности пользователю для редактирования Основная процедура в базовом действии: - ExecuteAction – исполняет действие в открытой транзакции БД. Как правило, здесь вызывается процедуры SaveEntity сущности, над которой исполняется действие. Т.к. сущности могут быть сложные, то в системе возможно наследование от 1 до n-объектов. Соответственно, в объектах-наследниках эти процедуры чтения и сохранения могут быть переопределены, но возможны вызовы унаследованных процедур в объектах-предках. Ситуации и сущности бывают самые разнообразные. Теперь о том, что меня интересует. Умом я понимаю, что хорошо подходит для двухуровневых систем типа клиент-сервер, не всегда может подходить для многоуровневых распределенных систем. Возможно ли в Java EE сохранить подход, который был использован годами в существующей системе (модель сущность-действие над сущностью, запись\чтение сущностей, множественное наследование сущностей и действий над ними), или здесь будет лучше пойти другим путем? Если другим, то каким именно? Какой подход\технологии посоветуете здесь использовать? Это первая часть. Во второй части мне придется решать вопрос отображения карточки сущности (формы для редактирования сущности) на экране пользователя. Стоит задача организовать работу пользователя через обычный браузер. В существующей системе используется следующий подход. При выборе определенного пункта меню пользователю загружается картотека доступных ему по правам сущностей. Затем он выбирает нужную ему сущность в списке сущностей и производит какие-то действия. Либо вызывает карточку сущности для внесения необходимых изменений, или выполняет какое-то доступное действие. От такого подхода хочу заранее отказаться, чтобы исключить лишнюю загрузку БД. Пользователь должен заранее знать внутренний или внешний идентификатор сущности, с которой он хочет работать. Если он не знает его, то только тогда ему предоставить форму для поиска, чтобы он мог её найти. Собственно, как мне видится, в клиентской части придется решать несколько задач: - загрузка карточки сущности, если пользователь знает внешний или внутренний номер сущности - организация просмотра истории выполненных действий над сущностью - организация формы поиска сущности по косвенным признакам (дата с, по, сумма с, по и т.д.). Какие технологии посоветуете мне применить для указанных целей? Какой несложный сервер приложений лучше использовать для пилотного проекта? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 14:21 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Рева, боюсь, что такая мешанина слов в вашем сообщении говорит о мешанине кода в проекте Delphi. Т.е. стандарта Delphi в виде клиент-сервер и БЛ в БД вы избежали? Вы готовы всё выкинуть и переписать на чисто проект в Java? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 14:29 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Какая именно мешанина вас смутила? Я описал только основное (модель сущность-действия над сущностью), чтобы ещё больше не грузить текстом. Бизнес логика фактически размазана между действиями и пакетными процедурами в оракле. При исполнении действия над сущностью идет проверка выполнений разнообразных условий. Может быть реализована, как в самом действии, так и в пакетных процедурах оракла. Если какое-то поле не заполнено или атрибут неверно заполнен для определенных условий, то выполнение действие прерывается исключением (Exception) Пока стоит задача сделать пилотный проект на Java EE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 14:50 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
РеваКакая именно мешанина вас смутила? если коротко, то вы писали проект не так как 99% мемберов в ветке Delphi. 2. Вы не выделяете главное в проекте. Второстепенными словами и шумом заслоняете Модель\БЛ и Цель. Зачем вот эта фаза для первоклассника? автор Если какое-то поле не заполнено или атрибут неверно заполнен для определенных условий, то выполнение действие прерывается исключением (Exception) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 14:54 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
РеваПока стоит задача сделать пилотный проект на Java EE. делайте. Вы первый раз в Java? Тогда Hello World примеры и вперёд. До архитектуры очень далеко. - выбрать IDE -> ORM -> HTML -> БЛ -> АппСервер -> .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 14:58 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
1. Если коротко, то писал её не лично я. Проекту больше 15 лет, работает у 10 крупных клиентов, около 100 человек на проекте (разработчики, тестировщики, аналитики). Модули настраиваются так, что у одного заказчика он так работает, у другого этак (через настроечные параметры) 2. Что именно (из главного) вы не увидели в моем описании? Вам нужно больше информации об учетных объектах системы? Пользователи регистрируют информацию о сущностях, выполняют регламентные действия над сущностями, формируют отчеты, сущности живут какое-то время, потом закрываются (сущности присваивается статус «закрыто») ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 15:11 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
если все запросы и/или хранимки в базе уже есть и устраивают то оставляйте их как есть, нах все эти orm. берете jdbc и какой нибуть connection pool ессесно. раз планируется javaee то всю бизнес логику, бины для работы с базой и тд.. помещаются в @stateless бины. при входе юзера в систему подгружаются его права и сущности, чтобы в дальнейшем не лазить в базу лишний раз (но тут по конкретной ситуации нужно смотреть) нормальный бесплатный сервер приложений glassfish4, используется у нас в довольно большом коммерческом проекте например, но я бы выбрал http://www.payara.fish/ это поддерживаемая версия того. на чем делать клиента.. тоже много всего можно напридумать, смотя что уже есть в голове.. а вообще готов помочь, за взаимо помощь.. ) так как занимался переносом толстых клиентов на веб уже достаточно раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 15:29 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Реваоколо 100 человек на проекте (разработчики, тестировщики, аналитики). и ни одного в Java? Вы задаёте вопросы с нуля в Java про то как try обрабатывается. Наверно, нужно проект в 50 человеко лет делать с другим штатом? Например, БЛ можно оставлять "как есть", а можно делать на AppServer'e. Кто это будет решать? Тут получается что вы год командой будете выходить на junior. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 15:56 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
breathесли все запросы и/или хранимки в базе уже есть и устраивают то оставляйте их как есть Тут 50*50 В системе хватает недостатков, что-то можно оставить как есть, что-то желательно переделать breathнах все эти orm. У меня тоже возникли сомнения, что будет немало вопросов с правильным маппингом Проходил ранее с ODBC На простых сущностях это более\менее сносно работает, а вот со сложными сущностями будет много танцев с бубнами. У меня тоже сложилось впечатление, что гораздо лучше, когда сам можешь слать параметризованные инсерты или апдейты breathраз планируется javaee то всю бизнес логику, бины для работы с базой и тд.. помещаются в @stateless бины. Вот это вот очень импонирует, чтобы сильно не привязываться к специфике конкретной БД breathна чем делать клиента.. тоже много всего можно напридумать, смотя что уже есть в голове.. В голове пока только стандартные браузеры (IE, Mozilla, Opera) … а какие ещё варианты? Ну кроме клиента на том же делфи breathа вообще готов помочь, за взаимо помощь.. ) В ЛС ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 16:07 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Petro123и ни одного в Java? Ну вот представьте себе Petro123Вы задаёте вопросы с нуля в Java про то как try обрабатывается. Можно пояснить, что вы имели ввиду? Вы по Try – except – обработку исключений? Или это такой тонкий юмор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 16:16 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
>Вот это вот очень импонирует, чтобы сильно не привязываться к специфике конкретной БД ну тут про другое хотелось сказать, это для jvm, чтобы она более оптимально работала со своими объектами. так как обращений к слоям которые вызывают базу или бизнес логику обычно много и нужны(бывают) транзакции то поместить этот код в stateless хорошая мысль и в целом для архитектуры всего приложения полезно. >В голове пока только стандартные браузеры (IE, Mozilla, Opera) … а какие ещё варианты? тут про технологии(либы, фрамеворки и тд..) которые могут облегчить процесс разработки клиентской части. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 16:28 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
РеваPetro123и ни одного в Java? Ну вот представьте себе Какие ответы вы тут ожидаете, если вы прошлый проект 15 лет не писали и в Java с нуля? Java - это очень большая бласть знаний. Больше Delphi в сто раз. Поэтому начинайте с Hello World JSP а не с сущностей и моделирования. У вас на проект нет даже junior. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 16:38 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
>чтобы сильно не привязываться к специфике конкретной БД и вообще да, если сменили или добавили базу то написали новый бин который реализует по своему общий интерфейс IUserCardDB например, и инжектируете его куда нужно, все запросы или вызовы хранимок к новой базе в нем. остальное приложение работает с ним и не знает из какой реально базы берутся значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 16:40 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Рева, 1) Я бы начал с изучения технологий Spring-boot + Spring-Data-jpa (быстрый старт, с масштабированием особых проблем нет). 2) У вас должно быть два типа "модели" а) Модель таблиц в БД б) Ваша доменная модель 3) Микросервисная архитектура. Для каждой единицы доменной модели свой микросервис. С выделенным слоем сервиса. И отдача по REST-API. DAO слой (ORM, модели таблиц, репозитоий) можно выделить в отдельную библоитоеку. 4) Клиент на любом удобном для вас JS-фреймворке + node.js (npm) Деплой и равзертывание, как вам удобнее. От контейнеров для микросервисов Docker, до "монолита" на WebSphere. P.S. JavaEE - хорошая вещь, но для старта мне кажется Spring-boot проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 08:20 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
РеваСтоит задача мигрировать с клиент-сервера (делфи+оракл) на Jаva EE. Опыт промышленной разработки с Java EE отсутствует. Плохая задача. 1. Бизнесу вообще непонятная. Пофиг на чём, лишь бы работало. Задача должна быть ясной. Например "улучшить масштабируемость", "мигрировать в web с клиентами на android/ios", "перейти на технологии, позволяющие нанимать умных людей, а не старых неудачников". 2. Переходить с устаревшой в прошлом весе на технологию, устаревшую 5 лет назад это не самый хороший подход. Переходите на набор микросервисов без javaee вообще. Иначе через 5 лет будут те же проблемы- нанаять сможете только тех, кому лень меняться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 08:28 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Petro123Какие ответы вы тут ожидаете, если вы прошлый проект 15 лет не писали и в Java с нуля? Вы толи додумываете за меня, толи читаете только то, что вам хочется прочитать. Я нигде не утверждал, что 15 лет ничего не писал. Я говорил, что писал систему (её архитектуру) не я. Это не значит, что я не писал ничего вообще. Я веду в ней лишь несколько направлений (модулей), и сильно отклониться от общей архитектуры я не могу. Petro123Java - это очень большая бласть знаний. Больше Delphi в сто раз. Насколько я себе сейчас все представляю, вокруг джавы вертиться куча технологий (сервера приложений, веб-сервисы, фреймворки и пр.). В их разнообразии легко утонуть и самое сложное в них – разобраться что именно мне надо, понять, что лучше использовать в каждом конкретном случае. Как язык программирования - все +- с прочими языками (с++, делфи и др.) … практически везде одно и тоже - типы, объекты, коллекции, функции, процедуры, операторы, циклы, наследование, переопределение, исключения, обработка исключений, логи и т.п. breath и вообще да, если сменили или добавили базу то написали новый бин который реализует по своему общий интерфейс IUserCardDB например, и инжектируете его куда нужно, все запросы или вызовы хранимок к новой базе в нем. Вот это конечно ново и интересно для меня – под каждый вид БД свой промежуточный интерфейс\набор классов? breath остальное приложение работает с ним и не знает из какой реально базы берутся значения. на текущем проекте при запуске клиентской части (делфи) пользователю дается ещё на выбор алиас БД (несколько значений в комбобоксе, подчитываются из реестра), с которой он может соединиться. Для обычного пользователя это не очень актуально, а вот для саппорта и разработки - очень даже. Связано со многими моментами (тестированием, запуском в промышленную эксплуатацию, переходами на новую версию). Вот этот момент ещё интересен (как обычно поступают в ЕЕ) В данный момент в версию заказчику (новые доработки, устранение ошибок) передается набор dll и скриптов бд (альтеры, апдейты). Его саппорт сам решает, когда накатывать это на продуктовую базу , (и накатывать ли вообще) перед этим обычно сами ещё тестируют то, что им передали. Интересно как обычно в ЕЕ поступают. Jar, ear, скрипты бд. Наверное, тоже по-разному бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:27 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
mad_nazgul3) Микросервисная архитектура. Для каждой единицы доменной модели свой микросервис. С выделенным слоем сервиса. Вот и у меня похожие мысли были. Разбить систему на сервисы. Наверное, самое сложно будет – и не наплодить избыточных, и не сделать слишком крупных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:36 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
микросервисы, nodejs.. в основном к терапевту javaee умерло..ыы спринг неповоротливый, как по рельсам ехать (бывает считают это плюсом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:38 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Alexey TominПлохая задача. 1. Бизнесу вообще непонятная. Пофиг на чём, лишь бы работало. Задача должна быть ясной. Например "улучшить масштабируемость", "мигрировать в web с клиентами на android/ios", "перейти на технологии, позволяющие нанимать умных людей, а не старых неудачников". Бизнесу вообще все пофиг, его все устраивает. Ему важно лишь чтобы "все было хорошо" и работы поменьше. Alexey Tomin2. Переходить с устаревшой в прошлом весе на технологию, устаревшую 5 лет назад это не самый хороший подход. Переходите на набор микросервисов без javaee вообще. Иначе через 5 лет будут те же проблемы- нанаять сможете только тех, кому лень меняться. Потом устареет набор микросервисов и все по новому кругу. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:43 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
что понимать под микросервисами, и лет 10 это было, но сейчас для некоторых это называется микросервисами. тут как воображение сработает и без фанатизма лучше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:43 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
breathчто понимать под микросервисами https://ru.wikipedia.org/wiki/Микросервисы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:45 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
РеваЯ нигде не утверждал, что 15 лет ничего не писал. Я говорил, что писал систему (её архитектуру) не я. Логика есть? Выше написано что 15 лет вы ЭТУ систему не писали. А сейчас вы даже не junior. Т.е. все слова выше написанные мемберами для вас пустой звук. Даже слово JSP. "Приходит в хирургию терапевт и говорит - Научите меня резать." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:52 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
РеваAlexey TominПлохая задача. 1. Бизнесу вообще непонятная. Пофиг на чём, лишь бы работало. Задача должна быть ясной. Например "улучшить масштабируемость", "мигрировать в web с клиентами на android/ios", "перейти на технологии, позволяющие нанимать умных людей, а не старых неудачников". Бизнесу вообще все пофиг, его все устраивает. Ему важно лишь чтобы "все было хорошо" и работы поменьше. Тогда надо внедрять всё потихоньку. Т.е. не надо переписывать всё сразу- такие проекты умирают в 99% случаев. Я знаю почти изнутри одну провальную попытку переписать "все на java". Изнутри одну, которая померла по внешним причинам, но это хорошо (иначе намучались бы). И от лично знакомых- четыре последовательных попытки переписать delphi+oracle на c#+mssql (а это проще). Надо делать не так. Берётся небольшой кусок, который можно написать за пару месяцев. Да, это будет микросервис. Пишется, потом в текущей системе меняете что-то, чтобы использовать новый кусок. Так кусочек за кусочком переделываете всё с тем, чтобы в какой-то момент старая система стала одним из небольших кусочков новой. Последовательность кусочков выбрать можете только вы- лучше начитать с чего-то простого. PS: Надо понимать, что через год написанный первым кусок захочется выкинуть и переписать, ибо поймёте, что там куча плохого кода и всё надо было делать не так. Да и в целом- через N месяцев разработки на java то, чтобыло написано самим собой N/6 месяцев назад вызывает ужас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:59 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Petro123Логика есть? Выше написано что 15 лет вы ЭТУ систему не писали. Ну вы и зануда редкая. Вот что я написал сразу: Рева1. Если коротко, то писал её не лично я. Проекту больше 15 лет, Персонально для вас уточню ещё раз и разжую: проекту больше 15 лет, начинали другие люди\разработчики. Я пришел на проект позже, сейчас веду в нем отдельное бизнес-направление (несколько модулей), отклониться от общей архитектуры невозможно. Ещё уточнения нужны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 11:03 |
|
||
|
Подходы к редактированию\чтению Entity в Java EE
|
|||
|---|---|---|---|
|
#18+
Рева, могу предложить так: - вы проектируете Модель как тут: http://www.databaseanswers.org/data_models/index.htm Т.к. всё от неё начинается. - через полгодика подписываете её у руководства и параллельно изучаете любую IDE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 11:03 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39399849&tid=2123171]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
116ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 222ms |
| total: | 462ms |

| 0 / 0 |
